Repository Guide
What each repository in the Cookest ecosystem contains, its tech stack, and how to work with it
Repository Guide
Cookest is a multi-repository project. Each repository is an independent component with its own Git history, CI/CD, and deployment. This page documents what each repo does and how they connect.
Ecosystem Map
Repository Details
api/ — Backend workspace
| Attribute | Value |
|---|---|
| Languages | Rust 1.78+ + Python 3.10+ |
| Frameworks | Actix-Web 4, SeaORM 1.1, FastAPI-style Python microservice |
| Workspace | Multi-crate Cargo workspace |
| Services | app-api, food-api, image-gen |
| Shared crate | crates/shared for common errors and types |
| Database | PostgreSQL 15+ |
| AI | Ollama + async image generation |
Purpose: The api/ repo now contains the full backend workspace: the deployed App API, the standalone Food API, shared Rust crates, the legacy monolith source retained for reference, and the Python image-generation microservice.
Key directories:
api/
├── src/ ← legacy monolith (not the deployed binary)
├── crates/app-api/ ← deployed App API with auth, meal plans, pantry, AI chat, and proxies
├── crates/food-api/ ← standalone food catalog service
├── crates/shared/ ← shared errors, DTOs, and common types
└── image-gen/ ← Python image generation microserviceCrate / service roles:
crates/app-api— the main deployed API used by mobile and web clientscrates/food-api— catalog and browse service for recipes and ingredientscrates/shared— reusable errors and shared Rust typesimage-gen/— async hero/step recipe image generation servicesrc/— legacy monolith code, kept for migration/reference purposes only
Quick start:
cd api
cp .env.example .env
docker compose up --buildUI/ — Flutter Mobile App
| Attribute | Value |
|---|---|
| Language | Dart 3.x |
| Framework | Flutter 3.x |
| State | Riverpod 2.5 |
| Navigation | GoRouter 17 |
| HTTP | Dio 5.9 + cookie manager |
| Design | Material 3, sage green (#7A9A65) |
Purpose: Native iOS/Android client for meal planning, shopping, pantry management, and AI chat.
Key directories:
UI/lib/src/
├── core/ ← API client, auth, storage
├── features/ ← Feature modules (auth, recipes, meal_plan, etc.)
└── shared/ ← Reusable widgets, theme, componentsQuick start:
cd UI
flutter pub get
flutter run # Run on connected device/emulatorweb/ — Next.js Landing Page
| Attribute | Value |
|---|---|
| Language | TypeScript 5 |
| Framework | Next.js 16 (App Router) |
| Styling | TailwindCSS 4 |
| Animations | Framer Motion 12 |
| i18n | Custom TranslationProvider (5 languages) |
Purpose: Public-facing marketing site showcasing Cookest features, app download links, and sustainability mission.
Key components:
web/app/components/
├── Nav.tsx, Hero.tsx, Features.tsx
├── Showcase.tsx, HowItWorks.tsx
├── Sustainability.tsx, Download.tsx
├── TranslationProvider.tsx ← i18n context
└── ShaderCanvas.tsx ← WebGL effectsQuick start:
cd web
npm install
npm run dev # Start on localhost:3000cookest-ad/ — Remotion video ads
| Attribute | Value |
|---|---|
| Language | TypeScript 5 |
| Framework | Remotion |
| Composition | 5-scene cursor-driven ad composition |
| Automation | Puppeteer screenshot automation |
Purpose: Generates polished video ad assets for Cookest marketing campaigns and promos.
Highlights:
- Multi-scene Remotion composition driven by scripted cursor motion
- Automated screenshot capture via Puppeteer for repeatable scene assets
- Separate marketing-focused repo so motion work can iterate independently from app and backend code
etl/ — Python Data Pipeline
| Attribute | Value |
|---|---|
| Language | Python 3.10+ |
| Database | psycopg2 → PostgreSQL |
| APIs | USDA FoodData Central, TheMealDB |
| Data | MM-Food-100K (~100K recipes) |
Purpose: Extract, transform, and load recipe + nutrition data into the PostgreSQL database.
Pipeline stages:
- Extract → Read CSV + API responses with rate limiting
- Transform → Normalize ingredients, deduplicate, convert units, enrich nutrition
- Load → Bulk upsert into PostgreSQL (idempotent)
Quick start:
cd etl
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Set DATABASE_URL, USDA_API_KEY
python main.pydataset/ — Recipe Data
Contains MM-Food-100K.csv — approximately 100,000 recipe records with:
- Recipe name, cuisine, cooking method
- Ingredient lists (JSON)
- Nutritional profiles (calories, fat, protein, carbs)
- Portion sizes with gram equivalents
- Image URLs
This CSV is consumed by the ETL pipeline.
docs/ — Documentation Site
| Attribute | Value |
|---|---|
| Framework | Next.js 16 + Fumadocs 16.8 |
| Content | MDX files (Markdown + JSX) |
| Languages | EN, PT (Tier 1) + FR, DE, ES (Tier 2) |
| Runtime | Bun |
Purpose: Centralized documentation for the entire ecosystem. You're reading it now.
See Documentation Architecture for technical details.
.github/ — Organization Profile
Contains the GitHub organization profile README and assets displayed on the Cookest GitHub organization page. Separate Git repository.
How Components Connect
Authentication Flow
Data Flow
Subscription Tiers
| Feature | Free | Pro (€9.99/mo) | Family (€14.99/mo) |
|---|---|---|---|
| Inventory + meal plan | ✅ | ✅ | ✅ |
| AI meal plan generation | ❌ | ✅ | ✅ |
| AI Chat | 10/day | ∞ | ∞ |
| Price comparison | ❌ | ✅ | ✅ |
| User-created recipes | ❌ | ✅ | ✅ |
| Shopping list optimizer | ❌ | ✅ | ✅ |
| Multiple household profiles | ❌ | ❌ | ✅ |