This template should help get you started developing with Vue 3 in Vite.
VSCode + Volar (and disable Vetur).
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 Volar to make the TypeScript language service aware of .vue types.
See Vite Configuration Reference.
- v20.13.1
npm installnpm run devnpm run buildRun Unit Tests with Vitest
npm run test:unitLint with ESLint
npm run lintnpm run build
npm run deployThis project follows the color palette defined here: color pallete
Below are the wireframes used as design guidelines:
You can test the deployed project in a real environment at the following URL:
I intentionally avoided component libraries to better showcase my coding skills. The technologies and tools used are:
-
TypeScript: Adds static type checking, helping catch errors early, reducing bugs, and making the code more robust.
-
Pinia: Applied for state management, ensuring a reactive and centralized state in the browser.
-
Vue Router: Used to handle navigation between separate views for recipe search and favorite recipes.
-
ESLint & Prettier: Enforced consistent code style, prevented errors, and improved maintainability.
-
GitHub Pages (gh-pages): Used for project deployment.
-
Vitest: Implemented unit testing.
-
Vite: Chosen as the build tool for faster development and optimized production builds.
- This project follows WCAG guidelines to ensure accessibility compliance. The complete accessibility report is available in the project’s docs folder.
Due to time constraints, some features were considered but not implemented. These include:
-
Better error handling throughout the application.
-
Complete unit testing for all components.
-
Husky integration to enforce linting and formatting on pre-commits and automate deployments post-push.
-
Enhanced UI/UX by adding animations and smooth transitions.
-
Improved accessibility refinements beyond WCAG compliance.
-
Optimized CSS structure to reduce duplicate code and improve maintainability.
-
Performance Optimization: A Lighthouse analysis revealed areas for performance improvement, particularly in image handling. When searching for recipes, implementing pagination with an offset of ten would ensure that only a limited number of recipe card components load at a time. This prevents the application from rendering all images simultaneously, reducing unnecessary load and improving overall efficiency.
-
i18n support for multi-language functionality.