Deploy
Azure-hosted delivery path
The repo includes an Azure Static Web Apps CI/CD workflow. Every deploy runs lint, typecheck, tests, and a production build before the Azure upload step.
- GitHub Actions quality gate before deploy
- Node 20.19.6 pinned in CI
- Production secrets injected at deploy time
Data
Supabase for auth, data, and file storage
Authentication, relational data, and menu PDF storage are all wired through Supabase. The schema and row-level security migrations live in this codebase.
- Email/password auth flows are implemented
- Menu PDFs are served through signed URLs
- Schema migrations are versioned in-repo
AI
Structured extraction instead of freeform output
The parse route calls OpenAI's Responses API and forces the model to return strict JSON matching the menu schema required for the selected venue, dates, services, and item types.
- Current default parser model: gpt-5.4
- Parser profiles can override the model per venue
- Unexpected dates, services, and item types are rejected
Validation
Rules after AI, not instead of rules
AI extraction is only one layer. The app validates venue alignment, required service slots, item-type matching, signed file access, and parse completeness before data is accepted.
- Venue, upload, period, and profile must align
- Strict schema parsing limits drift
- Completeness checks highlight missing services