Menu Planner — recipes, grocery list, and meal planning in one place
Menu Planner is the Personal-context module for everything you eat. Three tabs, one shared data layer:
• **Grocery list** — your shopping list, grouped by aisle (Produce, Dairy, Meat, Pantry, Frozen, Bakery, Other). Add items by hand or auto-populate from scheduled recipes. Check items off as you shop.
• **Plan a meal** — schedule one of your saved recipes (or a brand-new one) to a meal slot. Scheduling auto-creates a Personal calendar event for that meal AND scales the recipe's ingredients into the grocery list with the right portion math.
• **Recipes** — your saved recipes. Create from scratch, paste from the web (AI extracts the structure), or generate from a prompt with Claude. Edit, duplicate, delete.
To turn it on: Account → Modules → Personal modules → Menu Planner.
How the three tabs talk to each other:
1. Save a recipe (Recipes tab) or paste from a website (the AI parser builds the structured Recipe for you).
2. Plan a meal (Plan tab) → pick the recipe, the date/time, and the number of servings. We scale the ingredients to match the serving count, write a Personal calendar event for the meal, and add the ingredients you don't already have to the grocery list.
3. Check items off the grocery list as you shop. Tap the meal event on your calendar → Cook Mode opens a kitchen-friendly view with timers and step-by-step.
Designed for shared spaces (households, families):
Every recipe and grocery item carries a `sharedSpaceId` field. When you're a member of a household space, items tagged with that space are visible AND editable to everyone in the household — your spouse adds milk to the list and it shows on your phone before you leave for the store. No per-item share toggle, no "send list to" step. The space's membership IS the share.
Recipe storage: `users/{uid}/recipes/{recipeId}`. Grocery: `users/{uid}/groceryList/{itemId}`. Both are private to you unless tagged with a shared space.