Public Access
- Update implementation-plan.md: mark unit conversion complete - Update HANDOFF.md: add session notes for 2026-05-24 unit conversion - Update README.md: list Unit Conversion as a feature
78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# Meal Planner
|
|
|
|
Self-hosted meal planning system that integrates with Lucky California grocery store, sends weekly meal proposals via email to family members, generates shopping lists, and learns from feedback.
|
|
|
|
## Background
|
|
|
|
This project was born out of frustration with meal kit services (Blue Apron → EveryPlate → HungryRoot → Sunbasket) that:
|
|
- Escalate costs to 3x ingredient markup
|
|
- Fall into repetitive meal rhythms
|
|
- Force users to log into apps to manage selections
|
|
- Don't integrate with home pantry items
|
|
|
|
## Features
|
|
|
|
- **Grocery Integration**: Scrapes Lucky California weekly ads and sales
|
|
- **Family Approval Workflow**: Email proposals with approve/deny; one denial swaps the meal
|
|
- **Shopping List Generation**: Weekly list grouped by store aisles, highlighting sales, with interactive checkboxes to track purchased items
|
|
- **Pantry Integration**: Specify home items to incorporate into suggestions
|
|
- **Web UI**: Modern interface for the whole family
|
|
- **Learning**: Feedback-based meal recommendations, with weekly auto-discovery of new recipes from external APIs when family preferences are signaled
|
|
- **Recipe Images**: Scraped from public recipe sites, AI fallback available
|
|
- **Unit Conversion**: Converts recipe quantities (cups, tbsp, lb) to grocery units for accurate cost estimates
|
|
|
|
## Architecture
|
|
|
|
- **Backend**: Python/FastAPI
|
|
- **Database**: PostgreSQL
|
|
- **Frontend**: React + Tailwind CSS
|
|
- **Email**: SendGrid
|
|
- **Hosting**: Docker Compose with nginx reverse proxy
|
|
|
|
## Documentation
|
|
|
|
- [Project Specification](docs/SPEC.md)
|
|
- [Architecture](docs/ARCHITECTURE.md)
|
|
- [Database Schema](docs/database-schema.md)
|
|
- [Implementation Plan](docs/implementation-plan.md)
|
|
- [Running Guide](docs/RUNNING.md)
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Clone and start
|
|
docker-compose up -d
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Stop
|
|
docker-compose down
|
|
```
|
|
|
|
## Family Profile
|
|
|
|
Household: 2 adults, 2 children
|
|
- One adult likes mushrooms, one child OK with them
|
|
- Three family members do NOT like mushrooms
|
|
- No allergies
|
|
- Calorie, budget, and health conscious eating
|
|
|
|
## Approval Workflow
|
|
|
|
1. System generates 7-day meal plan based on sales, dietary constraints, budget, variety
|
|
2. Email sent to both adults with meal previews
|
|
3. One denial = meal swapped; no denials = auto-approved
|
|
4. Shopping list generated after approval
|
|
|
|
## Tech Stack
|
|
|
|
| Component | Technology |
|
|
|-----------|------------|
|
|
| Backend | Python 3.11, FastAPI |
|
|
| Database | PostgreSQL 15 |
|
|
| Frontend | React 18, TypeScript, Tailwind |
|
|
| Scraping | Playwright, BeautifulSoup |
|
|
| Email | SendGrid |
|
|
| Hosting | Docker Compose, nginx |
|