diff --git a/.browserslistrc b/.browserslistrc
deleted file mode 100644
index 214388fe4..000000000
--- a/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index b99e7de96..000000000
--- a/.dockerignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-.git
-.gitignore
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index c24743d00..000000000
--- a/.editorconfig
+++ /dev/null
@@ -1,7 +0,0 @@
-[*.{js,jsx,ts,tsx,vue}]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-max_line_length = 100
diff --git a/.env-EXAMPLE b/.env-EXAMPLE
index b05346729..94c979dcb 100644
--- a/.env-EXAMPLE
+++ b/.env-EXAMPLE
@@ -1,4 +1,4 @@
-# https://cli.vuejs.org/guide/mode-and-env.html#modes-and-environment-variables
-
-VUE_APP_API_BASE_URL={{ TODO }}
-VUE_APP_CVE_SERVICES_BASE_URL={{ TODO }}
\ No newline at end of file
+VITE_API_BASE_URL={{ TODO }}
+VITE_CVE_SERVICES_BASE_URL={{ TODO }}
+VITE_WEBSITE_ENVIRONMENT={{ TODO }}
+VITE_GOOGLE_ANALYTICS_PROPERTY_ID={{ TODO }}
\ No newline at end of file
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 000000000..f7ed21e57
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,19 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ 'extends': [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended',
+ '@vue/eslint-config-typescript',
+ '@vue/eslint-config-prettier/skip-formatting'
+ ],
+ rules: {
+ 'vue/no-v-text-v-html-on-component': 0,
+ 'vue/multi-word-component-names': 0
+ },
+ parserOptions: {
+ ecmaVersion: 'latest'
+ }
+}
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 8a893b2fe..000000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,35 +0,0 @@
-module.exports = {
- root: true,
- env: {
- node: true,
- },
- extends: [
- 'plugin:vue/essential',
- '@vue/airbnb',
- ],
- parserOptions: {
- parser: '@babel/eslint-parser',
- },
- rules: {
- 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
- 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
- 'vuejs-accessibility/no-redundant-roles': 'off',
- 'vuejs-accessibility/heading-has-content': 'off',
- 'vuejs-accessibility/label-has-for': 'off',
- 'vuejs-accessibility/form-control-has-label': 'off',
- 'vuejs-accessibility/aria-role': 'off',
- 'vuejs-accessibility/iframe-has-title': 'off',
- 'vuejs-accessibility/click-events-have-key-events': 'off',
- 'function-paren-newline': 'off',
- 'prefer-regex-literals': 'off',
- 'function-call-argument-newline': 'off'
- },
- overrides: [
- {
- files: ['*.vue', '*.js'],
- rules: {
- 'max-len': ['error', 150],
- },
- },
- ],
-};
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index e4ea36eff..2bfd844b0 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -62,4 +62,4 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
- category: "/language:${{matrix.language}}"
+ category: "/language:${{matrix.language}}"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index d8441eacf..325ac1b74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,23 +1,33 @@
-.DS_Store
-node_modules
-/dist
-
-# local env files
-.env.local
-.env.*.local
-
-# Log files
+# Logs
+logs
+*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
+lerna-debug.log*
+
+# local env files
+.env.*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
# Editor directories and files
+.vscode/
+!.vscode/extensions.json
.idea
-.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
-*.*~
+
+*.tsbuildinfo
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 000000000..66e23359c
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://json.schemastore.org/prettierrc",
+ "semi": false,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "printWidth": 100,
+ "trailingComma": "none"
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index b999ee80c..7936a381a 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,46 @@
# cve-website
-## Project setup
-```
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Type Support for `.vue` Imports in TS
+
+TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
+
+If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
+
+1. Disable the built-in TypeScript Extension
+ 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
+ 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
+2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
npm install
```
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
+### Compile and Hot-Reload for Development
-### Compiles and minifies for production
+```sh
+npm run dev
```
+
+### Type-Check, Compile and Minify for Production
+
+```sh
npm run build
```
-### Lints and fixes files
-```
+### Lint with [ESLint](https://eslint.org/)
+
+```sh
npm run lint
```
-
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git a/babel.config.js b/babel.config.js
deleted file mode 100644
index 757ff9b16..000000000
--- a/babel.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset',
- ],
-};
diff --git a/env.d.ts b/env.d.ts
new file mode 100644
index 000000000..11f02fe2a
--- /dev/null
+++ b/env.d.ts
@@ -0,0 +1 @@
+///