Inventory-aware cooking operations.
- Core Concepts
- Golden Flow
- Tech Stack
- Quick Start (Development)
- Domain Separation
- Key Features
- OpenFoodFacts Attribution and License
- Screenshots
- Non-Goals
- Project Status
- Documentation
- Contributing
- Security
- Recipes are universal: they use ingredient categories, not specific SKUs.
- Cooking is a stock operation: inventory is consumed and tracked through transactions.
- Preview before commit: you can inspect the consumption plan before applying changes.
- FEFO-first logic: items expiring sooner are consumed first.
- Add products to pantry stock with expiration dates.
- Create recipes with ingredient categories.
- Get daily cooking suggestions based on real stock.
- Preview the consumption plan.
- Confirm cooking and update stock with traceability.
- Backend: Fastify + Prisma + TypeScript
- Frontend: Vite + React + TypeScript
- Database: PostgreSQL
- Runtime: Bun
- Bun
- Docker (for PostgreSQL)
docker-compose up -dCopy the template:
cp backend/.env.example backend/.envPowerShell equivalent:
Copy-Item backend/.env.example backend/.envFor production, use a strong and private value for JWT_SECRET.
cd backend
bun install
bun run db:push
bun run db:seed
bun run devBackend health endpoint:
http://localhost:3001/health
cd frontend
bun install
bun run devFrontend dev URL:
http://localhost:5173
From backend/:
bun run db:seed:screenshotsThis script is non-destructive and idempotent for the demo target:
- reuses a deterministic demo account/household if already present
- creates and enriches data for fuller screenshots (stock, recipes, shopping states)
- avoids mass deletes and does not touch other households
Default demo credentials:
- email:
demo.screenshots@pantryops.local - password:
DemoScreenshots123!
Optional flags:
--size=compact|medium|large(default:medium)--household-name="PantryOps Demo Screenshots"--email=...--password=...
recipes: static recipe metadatastock: physical inventory state (lots, balances, transactions)suggestions: decision support and preview logicqueries: read-only aggregations
- Stock management with expiration dates
- FEFO-based consumption
- Cooking preview before commit
- Auditable stock transactions
- Stock-driven shopping suggestions
- Barcode scanning via OpenFoodFacts
PantryOps uses OpenFoodFacts data for barcode-based product lookup.
- Terms of use and reuse: https://world.openfoodfacts.org/terms-of-use
- API documentation: https://openfoodfacts.github.io/api-documentation/
- API introduction and license notes: https://openfoodfacts.github.io/openfoodfacts-server/api/
Key compliance points:
- OpenFoodFacts database is licensed under ODbL (attribution + share-alike obligations).
- A custom
User-Agentis required for API calls. - Endpoint-level rate limits apply.
- Register your app usage: https://world.openfoodfacts.org/api/v2/app/get
Current UI snapshots:
- Generic recipe collection app
- Calorie/nutrition tracker
- Polished consumer product focus over domain correctness
Early-stage open source project. Core inventory and recipe flows are stable, with ongoing UX iteration.
pantryops_project_documentation_versioned.mdCHANGELOG.mdNOTICE.mdCONTRIBUTING.mdSECURITY.mdSUPPORT.md
Contributions are welcome. Start with CONTRIBUTING.md.
Current priorities:
- Improve the golden flow
- Reduce cognitive load
- Keep decision logic explainable
Please report vulnerabilities following SECURITY.md.










