No description
|
Some checks failed
CI / build-test (push) Has been cancelled
commit a94394866d9e957693c7380b846cfee98739b8be
Author: jableader <jacobdunk@gmail.com>
Date: Mon Oct 20 00:11:28 2025 +1100
Ran codegen
commit affaa0e4a80edbb5185f06b3a252e1790e349ee3
Author: jableader <jacobdunk@gmail.com>
Date: Mon Oct 20 00:09:36 2025 +1100
Moved shopping.ts into composable
commit 83ced27a549784a35fa2715630d6fdca7f12f4aa
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 23:43:09 2025 +1100
Purchase fixed
commit 2fff14016eedaeb773c0f8b4ee9ccf08a1027449
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 22:54:36 2025 +1100
typescript migration complete
commit 17651bcc8b0f40ac1579563379c8fc45aba1997d
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 22:38:22 2025 +1100
Removing redundant null checks and type checking
commit 0cc3a508cd5c7d723eb76d665443b4d0fdad493f
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 22:30:52 2025 +1100
Moving date to sdk layer
commit 35d1189009b27876dd167f353c04f217b7c2805e
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 21:42:47 2025 +1100
No components re-parse dates already decoded by the boundary.
commit c4b82a31fad75bd5ec987847847076b537d35a7d
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 21:09:03 2025 +1100
Update spec and types
commit 55984bf7c9d51e76eaa6713a3ca86e9a73eb6b03
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 20:22:01 2025 +1100
Disallow casting entirely
commit eb02dc6a7b52048281a87924765d9aab1303150f
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 19:24:57 2025 +1100
Replaced components[schemas] outside sdk
commit 2f4c1bed56724e4f8a0d586921367604ce127a1a
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 19:06:38 2025 +1100
removed persons.ts
commit ae966db8a330c9f521f3c3cb7417c4f201467661
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 18:56:27 2025 +1100
Remove casts from sdk
commit 42c253021e504b45963834e56551ded55be377f1
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 18:38:05 2025 +1100
Remove *Like types
commit b0a4e21f19005fd69c0e9e16edaa9c10b1ca8567
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 18:32:26 2025 +1100
Defined quantity construct
commit bf4666b89e2d395bdd091ffb6ee66a9cfb866c6d
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 18:27:55 2025 +1100
Moved shopping view-model mapping (DTO → UI groups/meals) into `useShopping` (`mapItemToUI`, `groupsFrom`, `mealsFrom`).
- Refactored `CurrentShoppingListPage.vue` to consume composable helpers (less duplication, no local cast-heavy mapping).
- Refactored `PurchasedShoppingListPage.vue` to consume composable helpers and return typed SDK result; removed casts.
commit e7f84b453509a8fcffbb9923ec001f5be85e67e4
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 18:17:29 2025 +1100
Removing casts, any, unknown and runtime type checking
commit 6346eef4aff4d64b04f7dfa837c5b988645c242c
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 17:42:14 2025 +1100
domain/decoders.ts: removed casts; `purchaseDate` and `quantity` now trust API shapes.
commit 8b62eb9a9f2c0fe058d2dd37cc80071089379c34
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 17:36:50 2025 +1100
Plan alignment
commit dd81fd454b8e14874930cfc44828abddffd50c41
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 17:10:11 2025 +1100
More cast removals
commit 377d143ffc8596f46a3b32746d3710d99eb257cd
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 16:53:30 2025 +1100
Type tightening in sdk
commit ce2577f22190b18a52ae0fa4238c6d1beb7e3bb7
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 16:24:51 2025 +1100
All mappers removed/neutralized
commit 177205561a2d44aae2683e046960ef5fe8992255
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 16:20:34 2025 +1100
Replace ingredientnormalized with ingredient
commit fc75b24977cc89d420dc768fb4dc4ade84ed32c2
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 16:16:03 2025 +1100
More type safety tweaks and changes
commit c35cc2d3d58307290bbc2d5978baa48c1eda97b6
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 15:46:13 2025 +1100
Update vue-tsc
commit 2cd429804ca34a42c83ea81a3ae68e2cfccb5e36
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 15:28:01 2025 +1100
Ongoing SDK changes to tighten datatypes
commit e11847ae515eadf1bd33e88e154125fe361a5191
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 14:31:03 2025 +1100
Enforce template type checking
commit 777b8dee7e9ef0807a2b2c039443920671fe9c2d
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 14:28:52 2025 +1100
Boilerplate Collapse mappers to “decoders” and delete ad‑hoc view types
commit 4169c69d59cc16a24298351c38a60b4d4845f0c9
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 14:25:04 2025 +1100
Plan updates
commit de65164c91d9dc641ec86424bd4fe40f91bb4ada
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 14:16:37 2025 +1100
More camelCase changes
commit 4121c2157511f706b4704c5d5f769034d9bce5a0
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 14:00:48 2025 +1100
Remove unused js shims and autoformat project
commit d475565529bd0c12f06f85f0bcbf19c857176fa7
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 13:59:10 2025 +1100
camelCase conversions and api type propogation
commit 7b3b633a9d21c74977d4de120138fff192faaa78
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 13:11:22 2025 +1100
Strategise ts improvements
commit 9396e4928abcf9d8a74a656ad21913f95e8e3e41
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 13:06:19 2025 +1100
Linting errors
commit 528fa3bc2f6c42de6de37d9593d2ed31630d0e81
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 12:59:21 2025 +1100
Recipe search pagination
commit 4993c3e53f540e098f3275715c86754dee9392af
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 12:33:13 2025 +1100
Removed redundant nonnull check
commit c03d0b582d0a8b17e675cdf9bdab09eac4091d44
Author: jableader <jacobdunk@gmail.com>
Date: Sun Oct 19 12:29:57 2025 +1100
Persons api pagination
commit 67008b4a94a90295ed811594ca0e7f37c80a8305
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 22:44:32 2025 +1100
ts pages starting to work
commit 0144e7f70d19289007d6b035594786ce573cbc70
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 22:39:17 2025 +1100
More typescript fixes
commit dc429f84b48ca5892c6043db81b89fa6431d872d
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 18:28:54 2025 +1100
5) API client and codegen guardrails — DONE (scripts) / PARTIAL (CI wiring)
commit 36ba555d9a600ca8cca4c18571e0d96584243556
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 18:26:30 2025 +1100
Tighten composable and UI types (remove last anys) — DONE
commit 97523a9ef6aa972497e62d63c6f666453bb7eefc
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 18:24:11 2025 +1100
Align OpenAPI params to remove residual casts, Strengthen MSW tests for the typed client
commit 608f6b751cb982487e90560792aec33317981c60
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 18:14:11 2025 +1100
ts complete, rerun codegen
commit ca28376ed7bcb4ff4c7669210ce6eebfd9cb6eaa
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 18:09:29 2025 +1100
Document All JS under `src/` is now removed; the source tree is TS-only.
commit ff3338b108bbf094f987302a21f1779d8f23368f
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 17:59:49 2025 +1100
Ts tests
commit ce4555a279c715f427f9d00c346561efd74705f8
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 17:56:18 2025 +1100
Completed Generate real OpenAPI types and wire them
commit b7304aa7390f33a372acda46c593d6592aabf3f7
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 17:02:27 2025 +1100
DatePicker ts conversion
commit cb6ebdba286d44dbaae522ee29d95aa3ccfb5dc1
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:56:38 2025 +1100
Removed js files
commit 549eefd369499e0a1d35ff88a659c8aecd955a02
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:49:31 2025 +1100
- Utilities converted to TS: `src/dateformats.ts`, `src/units.ts`; imports updated accordingly.
- Router converted to TS: `src/router/index.ts`; legacy `index.js` removed.
commit 6f7731287f4166df5c02164ec4220e370c6d7a35
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:48:58 2025 +1100
alerts ts conversion
commit 4b1baec85a74b75e94d2392fea3b5abee294089c
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:27:35 2025 +1100
use v1 api
commit da11976b96d791935cb16c7b1fdb074a2c87f53c
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:18:17 2025 +1100
- Shopping pages converted to TS: `MyShoppingPage.vue`, `CurrentShoppingListPage.vue`, `PurchasedShoppingListPage.vue` (typed refs/computed; stable keys; wired to helpers).
commit acf740380bf53386e12e108ba09a507141176733
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:08:22 2025 +1100
Shopping MyShoppingPage converted to TS with typed refs.
commit 744d7e792d013f0ed04f11280f3351950925beee
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 16:05:19 2025 +1100
Shopping gets types
commit 4e576dca94424383bdf753403d7764e22a28f377
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:57:50 2025 +1100
Error tests
commit ac6ae41b840c30196a370a077e02953c63977908
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:56:20 2025 +1100
More datatypes
commit d7ea6538b1af6144933a2603d330cb17e04809db
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:45:49 2025 +1100
spec updates
commit 0d6cfc1328df8ab4a4baf8f31a7a4e1ea50fd850
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:44:34 2025 +1100
`codegen:check` warns when backend spec is newer than generated types
commit 54bff353b8e7429961364803300b38bc70f963c2
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:42:24 2025 +1100
PersonList ts
commit e5ffcdde7e9538525704581a82606261596d31f5
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:40:53 2025 +1100
MealCard ts
commit 5432d8333c023b0c6e25c9a6ac31519c818e6a58
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:39:29 2025 +1100
ue CLI now serves/builds with TypeScript entry, ESLint configured to parse TS, use ts code
commit aba3fd532550a90adeb957b4ddbb43798bcf9e5a
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:23:16 2025 +1100
composables typescript
commit 28ba44cc951fddfe64c386e77a91c2f46060cfb8
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:19:09 2025 +1100
let the typescriptin begin
commit 98e57e4d65cecdd1ed5ed3fbf6b1ebf46ae6af10
Author: jableader <jacobdunk@gmail.com>
Date: Sat Oct 18 15:13:58 2025 +1100
Added typescript
|
||
|---|---|---|
| .github/workflows | ||
| .husky | ||
| public | ||
| scripts | ||
| src | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| babel.config.js | ||
| CONTRIBUTING.md | ||
| jsconfig.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.eslint.json | ||
| tsconfig.json | ||
| vitest.config.js | ||
| vue.config.js | ||
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
- Install dependencies
npm install
- Run the dev server
npm run serve
- Run unit tests (Vitest)
npm run test
- Build for production
npm run build
Environment
- API base URL: set VUE_APP_API_BASE (e.g. http://localhost:8081)
Architecture and conventions
Strict TypeScript, Vue 3 Composition API, and a single typed API boundary.
Key axioms
- OpenAPI (generated
src/api/types.ts) is the single source of truth for shapes. - SDK (
src/api/sdk.ts) is the only data access surface; UI uses domain types fromsrc/domain/types.ts. - Domain normalization is minimal in
src/domain/decoders.ts(e.g., date strings →Date). - No casts (
as, angle brackets) and noany/unknownin app code. Generated files are exempt. - Arrays that are required in OpenAPI are non-nullable in domain types (e.g.,
Meal.recipes). - Disallow runtime type checks in app code; acceptable exceptions: DOM event narrowing, error/env handling in the boundary.
Layout
src/api/— Typed client and SDK boundarysrc/domain/— Domain types and decoderssrc/composables/— Reusable app logic (auth, meals, shopping, pagination, alert)src/components/— UI components and pagessrc/router/— Routes and helpers (parseRouteId,parseQueryString)
Testing and tooling
- Vitest + MSW under
tests/ - ESLint (type-aware) + Prettier + Volar
Development tips
- Prefer composables for shared logic; keep components thin.
- Use computed for derived values; avoid mutating props directly.
- Use discriminated unions for UI-only shapes when helpful (e.g., shopping
Group). - Add/adjust tests when changing behavior.
Troubleshooting
- API errors: verify
VUE_APP_API_BASEis set and reachable. - Type/IDE help: ensure Volar is enabled and ESLint is not conflicting with Prettier.
- Build issues: this project uses Vue CLI 5. If migrating to Vite, update scripts and configs accordingly.
Type checking and codegen
- Type check (TS strict + vue-tsc):
npm run typecheck
- Generate API types (consumed by SDK):
npm run codegen
Environment
- VUE_APP_API_BASE (Vue CLI) or VITE_API_BASE_URL (Vite) for API base URL
Testing
- Unit tests use MSW; the client defaults to a localhost base in tests for easy mocking