Paul Huliganga
ba870efeb8
feat(search): add server-side full-text search using MiniSearch
...
- install minisearch
- add SearchIndex service with field-weighted indexing
- sync index on recipe CRUD via RecipeService
- new GET /api/recipes/search endpoint with pagination and ranking
- unit tests for SearchIndex
- remove erroneous FTS5 schema changes (revert to ADR-001 compliant approach)
Search is now fast, pure JS, works with sql.js, respects privacy (server-side).
2026-03-30 22:35:45 -04:00
Paul Huliganga
b62b8061f7
fix(build): resolve TypeScript errors and stabilize test suite
...
- Dependencies: add @types/debug; fix logger argument typing
- Core: add middleware.ts (asyncHandler), create logger.ts
- Error handling: global middleware in index.ts maps Zod/service errors to proper HTTP status codes (400/413/502/504/415)
- Import route: catch UrlImportError and return mapped responses
- Tests: add error handlers to test setups to match production behavior
- Tags: duplicate/empty name errors now return 400
- Tests expectations: CopyMeThatImportService tests updated to match parser behavior (invalid recipes filtered, not counted as failures)
- Numerous route refactors (asyncHandler, validation, pagination links) and test expansions
Result: npm run build succeeds, all 90 tests pass.
Next: review low-priority items (FTS, harness auth), commit when ready.
2026-03-30 00:45:05 -04:00
Paul Huliganga
8b729d7fc4
chore(backend): implement high-priority improvements from code review
...
- Configuration: dotenv support, env vars for PORT, DB_PATH, CORS_ORIGIN, rate limits
- Security: API key auth for write endpoints, rate limiting on import, configurable CORS, image URL normalization
- Reliability: DB transactions for create/update, dirty flag for saves, foreign key enforcement (PRAGMA), duplicate detection O(1) optimization
- Features: health check endpoint (/api/health)
- Bugfix: corrected tag assignment/removal routes (param order)
- Testing: added tests for PUT/DELETE recipes, tag CRUD and assignment, enabled foreign keys in tests
- All 46 backend tests passing
Closes #<ticket-if-any>
2026-03-29 23:11:27 -04:00
Paul Huliganga
14c0cbb94c
Unify backend/frontend recipe search+tag filtering: backend search matches title, ingredient, tag; frontend list page has unified search input and tag filter bar wired to backend; tests for combined/ingredient/tag search; preserves existing features.
2026-03-25 14:17:45 -04:00
Paul Huliganga
3248e52057
Refactor backend to normalized ingredients/steps schema, remove tag color, update types/routes/services/tests. Blocking TS build error: all SQL params must be string|null; remaining bug is undefined may leak in RecipeRepository ingredient/step creation. See code for status. In-progress commit to checkpoint work.
2026-03-25 10:33:37 -04:00
Paul Huliganga
e2599b81f4
feat(api): implement recipe CRUD API endpoints
...
- Add Recipe type definitions (Recipe, CreateRecipeInput, UpdateRecipeInput)
- Implement RecipeRepository for database operations (CRUD + search)
- Implement RecipeService with business logic validation
- Create Express routes with Zod validation schemas
- Add database initialization module with auto-save functionality
- Implement comprehensive integration tests (16 tests, all passing)
- Support pagination, search filtering, and proper error handling
- Follow layered architecture pattern (Routes → Services → Repositories)
All tests passing (16/16). TypeScript strict mode enabled.
2026-03-24 00:13:58 -04:00