├── .eslintrc.cjs ├── .gitignore ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public └── favicon.ico ├── src ├── App.vue ├── api │ ├── api.js │ ├── favorites.js │ ├── images.js │ ├── index.js │ └── votes.js ├── assets │ ├── icons │ │ ├── icon-folder-search.png │ │ └── icon-home.png │ └── styles │ │ └── main.scss ├── components │ ├── DetailsRow.vue │ ├── NavItem.vue │ ├── NavMain.vue │ └── __tests__ │ │ └── NavItem-scaffold.spec.js ├── main.js ├── router │ └── index.js ├── stores │ ├── favorites.js │ └── votes.js ├── utils.js └── views │ ├── HomeView.vue │ └── ImageView │ ├── ImageDetails.vue │ ├── ImageList.vue │ ├── ImageView.vue │ └── __tests__ │ ├── ImageDetails-scaffold.spec.js │ ├── ImageDetails.spec.js │ ├── ImageList-scaffold.spec.js │ └── ImageList.spec.js ├── tailwind.config.js └── vite.config.js /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | module.exports = { 3 | root: true, 4 | extends: [ 5 | 'plugin:vue/vue3-essential', 6 | 'eslint:recommended' 7 | ], 8 | env: { 9 | 'vue/setup-compiler-macros': true, 10 | node: true 11 | }, 12 | globals: { 13 | vi: 'readonly' 14 | }, 15 | rules: { 16 | 'quote-props': [2, 'as-needed'], 17 | quotes: ['error', 'single'], 18 | semi: ['error', 'always'] 19 | }, 20 | overrides: [ 21 | { 22 | files: [ 23 | '**/__tests__/*.{j,t}s?(x)', 24 | '**/tests/unit/**/*.spec.{j,t}s?(x)' 25 | ], 26 | env: { 27 | jest: true 28 | } 29 | } 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | .env 21 | 22 | # Editor directories and files 23 | .vscode/* 24 | !.vscode/extensions.json 25 | .idea 26 | *.suo 27 | *.ntvs* 28 | *.njsproj 29 | *.sln 30 | *.sw? 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vueconf-2022-demo-app 2 | 3 | This template should help get you started developing with Vue 3 in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin). 8 | 9 | ## Customize configuration 10 | 11 | See [Vite Configuration Reference](https://vitejs.dev/config/). 12 | 13 | ## Project Setup 14 | 15 | ```sh 16 | npm install 17 | ``` 18 | 19 | ### Compile and Hot-Reload for Development 20 | 21 | ```sh 22 | npm run dev 23 | ``` 24 | 25 | ### Compile and Minify for Production 26 | 27 | ```sh 28 | npm run build 29 | ``` 30 | 31 | ### Run Unit Tests with [Vitest](https://vitest.dev/) 32 | 33 | ```sh 34 | npm run test:unit 35 | ``` 36 | 37 | ### Lint with [ESLint](https://eslint.org/) 38 | 39 | ```sh 40 | npm run lint 41 | ``` 42 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |
5 | This is a demo app created for my 2022
It is meant to represent a small subset of a real-life application, and was modeled after a portion of Lob's customer-facing Dashboard.
7 |
8 | The GitHub repo with unit tests can be found at