Cookiful is a social cooking and recipe-planning app for discovering recipes, saving what looks good, turning saved recipes into a grocery workflow, and using pantry context to find the next thing to cook.
The current implementation is a working local monorepo with a Next.js web app, FastAPI API, PostgreSQL persistence, Redis, Docker development wiring, Recipe Box data importers, social recipe actions, pantry-backed grocery lists, and home-page recipe discovery.
The app follows the Culinary Editorial design direction from docs/design: warm paper surfaces, copper accents, serif editorial type, and recipe-first layouts.
| Home | Expanded Feed |
|---|---|
![]() |
![]() |
| Landing | Login |
|---|---|
![]() |
![]() |
- Home experience at
/homewith recipe title search, curated recipe feed, editorial recommendations, social highlights, and quick actions. - Recipe discovery endpoints for curated recipes, title search, quick dinner ideas, and pantry matches.
- Auth flows for signup and login, with seed demo users for local development.
- Profile page with liked, saved, and reposted recipes.
- Groceries page at
/grocerieswith saved-recipe ingredients grouped by recipe plus profile-backed pantry items. - Social recipe actions for like, save, and repost.
- Docker development stack for Postgres, Redis, FastAPI, Next.js, and optional pgAdmin.
- Recipe import scripts for the bundled Recipe Box JSON datasets.
apps/
api/ FastAPI app and route tests
web/ Next.js App Router frontend
mobile/ Mobile placeholder
worker/ Background worker placeholder
packages/
db/ SQLAlchemy models, migrations, seed/import scripts
recipe-schema/
Bundled Recipe Box JSON datasets and schema helpers
types/ ui/ config/ ai-tools/ utils/
Shared package placeholders and utilities
docs/
architecture/
api/
product/
design/ Design docs, screenshots, and logo assets
infrastructure/
docker/ Local Docker Compose development stack
From the repository root:
cd infrastructure/docker
docker compose -f docker-compose.dev.yml up --buildThat starts:
- Web:
http://localhost:3000 - API:
http://localhost:4000 - Postgres:
localhost:5432 - Redis:
localhost:6379
Optional pgAdmin:
cd infrastructure/docker
docker compose -f docker-compose.dev.yml --profile tools up --build postgres redis pgadminpgAdmin runs at http://localhost:5050.
- Email:
admin@cookiful.dev - Password:
cookiful
With the Docker stack running, apply migrations and seed demo users:
docker exec cookiful-api python -m cookiful_db.scripts.apply_migration
docker exec cookiful-api python -m cookiful_db.scripts.seedImport a sample of bundled recipe data:
docker exec cookiful-api python -m cookiful_db.scripts.import_recipe_box_json --limit 1000 --commit-every 100Inspect the loaded recipes:
docker exec cookiful-api python -m cookiful_db.scripts.inspect_recipes --view --limit 10The seed users all use the same local password: cookiful-demo.
| Profile | |
|---|---|
demo@cookiful.app |
Cookiful Demo |
mara@cookiful.app |
Mara Chen |
sol@cookiful.app |
Sol Rivera |
nora@cookiful.app |
Nora Bell |
Cookiful is scaffolded for a split deployment:
- GitHub Pages serves the static Next.js web export from
.github/workflows/deploy-web-pages.yml. - Render runs the FastAPI Docker service, managed Postgres, and Render Key Value from
render.yaml.
See Render and GitHub Pages Deployment for the required URLs, Render environment variables, and the remaining Next.js static-export blockers.
Install workspace dependencies:
bun installStart the web app:
bun --filter @cookiful/web devStart the API:
PYTHONPATH=packages/db/src:$(/usr/bin/python3 -m site --user-site):. \
/usr/bin/python3 -m uvicorn apps.api.src.main:app --reload --host 0.0.0.0 --port 4000Useful root scripts:
bun run db:migrate
bun run db:seed
bun run db:bootstrap:sample
bun run db:inspect:recipesBackend route tests:
python3 -m unittest apps.api.tests.test_recipes_route apps.api.tests.test_me_routeFocused web tests:
cd apps/web
./node_modules/.bin/vitest run src/features/home/recipes-client.test.ts src/features/groceries/groceries-data.test.ts src/features/profile/profile-data.test.ts
./node_modules/.bin/tsc --project tsconfig.json --noEmitPrimary local assets used by the app and documentation:
The current visual direction is documented in:
- Architecture Overview
- Module Boundaries
- ERD Summary
- MVP API Draft
- Cooking Session State Machine
- Meal Planning and Grocery Rules
- Implementation Plan
Some architecture documents describe the longer-term target shape. The codebase currently uses FastAPI for the API service, Next.js for the web app, SQLAlchemy/Postgres for persistence, and Docker Compose for local orchestration.



