Commit Graph

6 Commits

Author SHA1 Message Date
Paul Huliganga 15ada9cb52 feat(frontend): add URL import error states 2026-03-24 23:24:30 -04:00
Paul Huliganga e1f5019006 feat(frontend): add edit-before-save flow for URL imports 2026-03-24 23:20:42 -04:00
Paul Huliganga 276e03cc87 feat(frontend): add import from URL page and form 2026-03-24 22:07:36 -04:00
Paul Huliganga 853374f060 feat(devops): add docker-compose orchestration with nginx API proxy
- Created docker-compose.yml with backend and frontend services
- Backend: Node.js API on port 3000 with SQLite volume persistence
- Frontend: nginx on port 8080 with health checks and restart policies
- Configured nginx to proxy /api/* requests to backend service
- Updated frontend API client to use relative URLs (/api instead of http://localhost:3000/api)
- Added Vite dev server proxy for local development workflow
- Implemented health checks for both services with service dependency
- Created comprehensive documentation in docs/docker-compose.md
- Verified: docker-compose.yml syntax is valid YAML

Next step: Test local deployment (docker compose up)
2026-03-24 08:12:55 -04:00
Paul Huliganga dbdbcf43fa feat(tags): implement tag management with create, assign, and display functionality
Backend:
- Add Tag type definitions (Tag, CreateTagInput, UpdateTagInput)
- Implement TagRepository with CRUD and recipe assignment methods
- Implement TagService with business logic and validation
- Create tag API routes (GET, POST, PUT, DELETE /api/tags)
- Add recipe-tag assignment endpoints (POST/DELETE /api/tags/recipes/:id/tags)
- Write 18 integration tests for tag functionality (all passing)
- Mount tag routes in main Express app

Frontend:
- Extend API client with tag CRUD and assignment methods
- Create useTags hook for tag state management
- Create TagSelector component for tag selection with inline tag creation
- Update RecipeForm to accept initialTags and pass selected tags to onSubmit
- Update RecipeDetailPage to fetch, display, and manage recipe tags
- Update RecipeCard to display tags with custom colors
- Add tag filter UI to RecipeListPage (note: backend filtering pending)
- Display tags in recipe detail view with color styling

Testing:
- All 34 backend tests passing (16 recipe + 18 tag tests)
- Frontend builds successfully with TypeScript strict mode
- Tag assignment and removal working end-to-end

Note: Tag filtering in recipe list shows UI but doesn't filter results yet.
Backend support for tag-based filtering can be added in future iteration.
2026-03-24 04:02:51 -04:00
Paul Huliganga c6c5d0e3f4 feat(frontend): implement recipe list page with search and pagination
- Create API client service (src/services/api.ts) with all CRUD operations
- Create useRecipes hook for data fetching with search and pagination
- Create RecipeCard component for displaying individual recipes
- Implement RecipeListPage with search bar, empty state, and error handling
- Add grid layout with responsive design (1-3 columns)
- Implement 'Load More' button for pagination
- Add recipe metadata display (servings, time, last cooked)
- Update TODO.md to mark task as complete
2026-03-24 03:12:27 -04:00