2.4 KiB
2.4 KiB
Kochwas — Implementation Plan Overview
Goal: Deliver the Kochwas MVP per the design spec in six phases, each ending in runnable, testable software.
Reference: docs/superpowers/specs/2026-04-17-kochwas-design.md
Phase Map
| # | Name | Outcome | Plan file |
|---|---|---|---|
| 1 | Foundations | Scaffolded SvelteKit app, SQLite schema with FTS5, Docker dev setup, pure-function modules (ingredient-parser, scaler, json-ld-extractor, iso8601) all unit-tested, /api/health endpoint |
2026-04-17-kochwas-phase-1-foundations.md |
| 2 | Import Pipeline | Working recipe import from URL to DB incl. images, preview endpoint, profile CRUD, integration tests with real HTML fixtures | 2026-04-xx-kochwas-phase-2-import.md |
| 3 | Core UI & Local Search | RecipeView component (mobile-first), Search page with FTS5 results, profile selector, rating/favorite/cooked actions | 2026-04-xx-kochwas-phase-3-ui.md |
| 4 | Web Search & Admin | SearXNG integration, whitelist admin UI, preview-before-save flow, profile admin | 2026-04-xx-kochwas-phase-4-web-admin.md |
| 5 | Advanced Features | Comments, tag editor, cooking-log view, print view, rename/delete, backup/restore ZIP | 2026-04-xx-kochwas-phase-5-advanced.md |
| 6 | PWA & Polish | Service worker + offline, Wake-Lock, install prompt, mobile-UX polish, E2E tests, prod Docker image | 2026-04-xx-kochwas-phase-6-pwa.md |
Each phase produces working software on its own. A phase is complete when all its tasks are checked off, tests pass, and a manual smoke-test on Docker Desktop succeeds.
Sequencing Rule
Phases are strictly sequential. Do not start Phase N+1 before Phase N is green (tests + smoke test).
Conventions (all phases)
- Commits: each task ends with a single atomic commit. Commit messages follow conventional-commits (
feat:,fix:,chore:,test:,docs:,refactor:). - Line endings: LF only (
.gitattributesalready in place). - Tests: Vitest for unit/integration, Playwright for E2E. Every pure function gets a unit test first (TDD).
- Code style: Prettier + ESLint using SvelteKit defaults. No emojis in code unless requested.
- Dev env: Local Docker Desktop for the SearXNG container; the SvelteKit app runs via
npm run devfor fast iteration. Production Docker image built in Phase 6. - TypeScript strict mode on from the start. No
anyunless justified inline.