Recipeapp Project Memory
Durable current-state reference for the Recipe Library repository.
Open source Repository Open in the app JSON README (API)
About
# Recipeapp Project Memory
- [Project](project.md)
- [Architecture](architecture.md)
- [Update log](log.md)
Details
- Kind
- OKF bundles
- Topic
- AI, RAG & memory
- Publisher
- jonc613
- Origin
- okf_github
- Category
- dados
- Version
- 0.2
- Last push
- 2026-09-08T23:22:35Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-09-08 02:23:09
- Updated
- 2026-09-08 02:23:09
- Origin id
JonC613/Recipeapp:.sdd/memory/index.md
README
# Recipe Library A mobile-first personal library for recipes worth making again: capture recipes, plan dinners, shop from a generated list, cook step by step, and ask grounded questions about saved recipes. ## Local development ```powershell npm ci npm run cf-typegen npm run dev ``` The Worker and its D1/R2 bindings run locally by default; Cloudflare credentials are not needed for local work. At the local address shown by Vite, you can create, edit, favorite, search, filter, and deliberately delete recipes. Recipes may start as a manual entry or an unsaved draft imported from a public URL, pasted recipe text, a PDF (with an explicit one-time OCR fallback for scans), an image or screenshot, or TheMealDB. Every import preserves its provenance, requires review, and only creates a library recipe after **Review and save**. Saved recipes can be opened in read-only Cooking Mode, assigned to a Sunday-based weekly dinner plan, and used to generate an editable persistent grocery checklist. **Recipe Chat** answers bounded, read-only questions against saved recipes and links its citations to their recipe detail pages. The owner-facing **Usage & Costs** page shows application activity and, only when separately configured, safe Cloudflare and OpenAI reporting summaries. Text, OCR, image extraction, and Recipe Chat use Worker-only OpenAI credentials. Local automated tests use controlled doubles and make no OpenAI requests. Keep `OPENAI_API_KEY` only in an ignored local `.env` variant; use `OPENAI_MODEL=gpt-5-mini` unless deliberately evaluating another model. Never use a browser-prefixed variable or commit a credential. ## Validation ```powershell npm run typecheck npm run cf-typecheck npm run build npm test npm run test:worker npm run test:integration npm run test:e2e npm run eval:recipe-chat:dry ``` Cloudflare resource provisioning and deployment are separate account-changing steps. ## Remote deployment Production is configured only for `https://recipes.merkavaenterprises.com`; the provider-assigned Worker address is disabled. Before deployment, make sure `merkavaenterprises.com` is an active Cloudflare zone and the `recipes` hostname has no conflicting CNAME record. Set up a Cloudflare Access self-hosted application for the exact hostname with one Allow policy for the owner's approved email. Keep the email out of Git and do not use an Everyone, all-valid-email, domain-wide, or bypass policy. Confirm that the chosen Access sign-in method works for the owner before release. Keep `OPENAI_API_KEY` in Cloudflare Worker secret management only. Review and explicitly confirm remote D1 migrations against the existing `recipeapp-db`; do not recreate the database or the private `recipeapp-sources` R2 bucket. After deployment, verify unauthenticated Access denial, authorized health, manual save/search, text-import review/save, meal-plan and grocery-list behavior, Recipe Chat, and the data-preserving rollback procedure described in `specs/008-secure-deployment/quickstart.md`. Every Cloudflare, DNS, database, secret, and deployment action requires separate owner approval at the time it runs. Record deployment evidence and the current recovery version in the feature quickstart only; do not place owner identities, API keys, session data, or private source material in Git.