# TODO — Recipe Manager **Last Updated:** 2026-03-24 **Current Milestone:** MVP (v0.1) --- ## 🎯 Active Tasks ### Backend Setup - [x] Initialize Node.js backend: Create src/backend/, package.json with express, better-sqlite3, zod, vitest. Create src/backend/index.ts with "Hello World" server on port 3000. Verify: npm install && npm run dev (server starts). Commit as "feat(backend): initialize Node.js project with Express" - [x] Set up TypeScript: Create tsconfig.json (strict mode, ES2022, Node16 module resolution). Add build script to package.json. Verify: npm run build succeeds. Commit. - [x] Create SQLite schema: Create src/backend/db/schema.sql with recipes, tags, recipe_tags tables per ARCHITECTURE.md. Create src/backend/db/migrate.ts to apply schema using sql.js (see ADR-001). Verify: npm run migrate creates data/recipes.db. Commit. - [x] Implement recipe CRUD API endpoints - [x] Add Zod validation schemas - [x] Write API integration tests ### Frontend Setup - [x] Initialize React + Vite project - [x] Configure Tailwind CSS - [x] Set up React Router - [ ] Create recipe list page - [ ] Create recipe detail/edit page - [ ] Implement cook mode UI ### Features - [ ] Tag management (create, assign, filter) - [ ] Text search (title + ingredients) - [ ] Screen wake lock for cook mode - [ ] Basic error handling + loading states ### DevOps - [ ] Create Dockerfile for backend - [ ] Create Dockerfile for frontend (nginx) - [ ] Write docker-compose.yml - [ ] Test local deployment ### Documentation - [ ] Write API documentation (docs/api.md) - [ ] Create user guide (docs/user-guide.md) - [ ] Add setup instructions to README - [ ] Document first architecture decisions (ADRs) --- ## ✅ Completed Tasks ### 2026-03-24 - **React Router setup** - Updated main.tsx to wrap App in BrowserRouter - Configured routes in App.tsx with navigation header - Created page components: RecipeListPage, RecipeDetailPage, CookModePage, NotFoundPage - Added active link highlighting in navigation - Defined routes: / (list), /recipe/new, /recipe/:id, /recipe/:id/cook, * (404) - Verified build and dev server work correctly - **Tailwind CSS configuration** - Installed Tailwind CSS v4 with PostCSS and Autoprefixer - Installed @tailwindcss/postcss plugin for v4 compatibility - Created tailwind.config.js with content paths - Created postcss.config.js with Tailwind and Autoprefixer - Updated index.css with Tailwind directives - Updated App.tsx to demonstrate Tailwind utility classes - Verified build and dev server work correctly - **Frontend initialization** - Created frontend/ directory with Vite + React + TypeScript - Installed React Router 7 - Set up project structure (components/, hooks/, pages/, services/, types/) - Created Recipe and Tag TypeScript interfaces - Verified dev server starts successfully on port 5173 - Added frontend README with development instructions - **Recipe CRUD API implementation** (commit e2599b8) - Implemented GET /api/recipes (list with pagination & search) - Implemented GET /api/recipes/:id (get single recipe) - Implemented POST /api/recipes (create recipe) - Implemented PUT /api/recipes/:id (update recipe) - Implemented DELETE /api/recipes/:id (delete recipe) - Added Zod validation schemas for all endpoints - Created layered architecture (Routes → Services → Repositories) - Wrote 16 integration tests (all passing) - Database auto-save functionality ### 2026-03-23 - Backend initialization (Node.js + Express) - TypeScript setup with strict mode - SQLite schema creation with sql.js --- ## 📋 Backlog (Post-MVP) ### v1.0 - [ ] Browser extension for recipe scraping - [ ] Recipe scaling (adjust servings) - [ ] Print styles - [ ] Advanced search filters - [ ] Random recipe suggestion ### v2.0 - [ ] AI ingredient substitutions - [ ] Meal planning - [ ] Shopping list generation - [ ] Fintrove cost tracking integration --- ## 🚧 Blocked / Needs Decision - **Recipe images:** Store in filesystem or SQLite? (Waiting for agent decision) - **Scraping strategy:** Puppeteer vs Cheerio? (v1.0 decision) --- ## Notes for Agents - Check this file before starting work - Move completed tasks to "Completed" section - Add new tasks as you discover them - Flag blockers for Paul's attention - Keep this file current (update after each commit) --- _This is your working task list. Keep it honest and up-to-date._