A complete single-page meal planning application built with vanilla HTML, CSS, and JavaScript. No frameworks, no build tools required.
- Create, edit, and delete recipes
- Categorize recipes (Breakfast, Lunch, Dinner, Snack, Dessert)
- Upload recipe images
- Track ingredients with quantities, units, and categories
- Step-by-step cooking instructions
- Search and filter recipes
- Scan recipe images using Tesseract.js
- Automatic text extraction from photos
- Smart parsing of recipe name, ingredients, and steps
- Edit and refine extracted data before saving
- Plan meals for 1-14 days
- Grid view with days and meal times
- Drag-free recipe assignment
- Visual meal calendar
- Easy recipe swapping
- Auto-aggregated from meal plans
- Ingredients grouped by category (Produce, Dairy, Meat, Pantry, Frozen, Other)
- Quantity combining for duplicate items
- Checkable items with persistence
- Clear checked items feature
- All data stored in localStorage
- Export data as JSON backup
- Import data from JSON file
- Clear all data option
- Open
index.htmlin any modern web browser - Start adding recipes using the floating "+" button
- Plan your meals in the Planner tab
- Generate your shopping list from planned meals
meal-planner/
├── index.html # Main HTML structure
├── styles.css # Complete styling (dark theme with royal blue accents)
├── app.js # Full application logic
└── README.md # This file
- Background:
#0d1117(dark) - Surface/cards:
#161b22(dark gray) - Accent:
#4169E1(royal blue) - Text:
#e6edf3(light) - Muted:
#8b949e(gray) - Borders:
#30363d(subtle)
All data is stored in browser localStorage:
mp_recipes- Recipe collectionmp_plans- Meal plan assignmentsmp_settings- User preferencesmp_shopping_checked- Checked shopping items
Works in all modern browsers supporting:
- ES6 JavaScript
- CSS Grid
- localStorage
- FileReader API
- Crypto API (for UUID generation)
The only external dependency is Tesseract.js (loaded via CDN) for OCR functionality. The app will work without it, minus the recipe scanning feature.
- Minimum 48px tap targets
- Bottom tab navigation for thumb access
- Large, clear buttons
- Responsive design for mobile and tablet
All data stays on your device. Nothing is sent to any server. Export your data regularly as a backup.