## Munch Ease — Plan, Cook, Shop, Repeat Munch Ease is a snappy Vue 3 app that helps you plan meals, manage recipes, and turn plans into stress-free shopping lists. Search and save recipes, build your weekly meal plan, and seamlessly check items off your shopping list—everything stays in sync so you can focus on what’s cooking. Built with modern Vue patterns, a clean API layer, and lightweight tests, the project is easy to extend and fun to work on. --- ## Quick start 1) Install dependencies ```bash npm install ``` 2) Run the dev server ```bash npm run serve ``` 3) Run unit tests (Vitest) ```bash npm run test ``` 4) Build for production ```bash npm run build ``` Environment - API base URL: set VUE_APP_API_BASE (e.g. http://localhost:8081) --- ## Architecture and conventions The codebase follows clear boundaries and Vue 3 Composition API throughout. - Routing and auth - Centralized in `src/router/index.js` with named routes and an auth guard via route meta `requiresAuth`. - Components use `useRouter/useRoute` for navigation and route access. - API layer and mappers - `src/api/http.js` is a tiny JSON fetch wrapper that honors `VUE_APP_API_BASE`. - Feature services live in `src/api/*` (meals, recipes, shopping, auth, persons). - Normalization lives in `src/api/mappers/*` (e.g., date parsing, shape cleanup). - Composables (UI-facing logic) - Reusable logic in `src/composables/*` (useAuth, useMeals, useShopping). - Components stay thin: data via refs/reactive, effects via computed/watch. - Components - All Single File Components use `