# 🍽️ **Meal‑Prep Master Planner – Premium Edition**

> **Designed for busy parents** who need a complete, end‑to‑end system: weekly menus, nutrition & budget tracking, family‑specific meal suggestions, printable grocery lists, and automated workflows—all in one Notion dashboard.  
> **Duplicate** the template (via the “Duplicate” button on the public page) before you start customizing so you always have a clean backup.

---

## 📊 Dashboard (Desktop)

| View | Source | Filter | Sort |
|------|--------|--------|------|
| **Weekly Menu (Calendar)** | Meal Planner | Week of today | Day (Mon → Sun) |
| **Today’s Prep** | Prep Tasks | Due = Today | Priority ↓ |
| **Grocery List (Print)** | Grocery List (Rollup) | — | — |
| **Nutrition Summary** | Nutrition Rollup | Week of today | — |
| **Budget Summary** | Budget Rollup | Week of today | — |
| **Quick Recipes** | Recipes | Tag = “30‑min” | — |

*Add each as a **Linked Database** block, then set the filters/sorts exactly as shown.*  
The Dashboard gives you a daily snapshot without leaving the page.

---

## 📱 Mobile‑Optimized Dashboard

> **Tip:** On mobile, hide the wide table columns and show only the most essential views.

| Section | Content |
|---------|---------|
| **Today** | Linked view of **Today’s Prep** (list) |
| **Meal Card** | Linked view of **Weekly Menu (Calendar)** – compact “Week” view (Mon‑Sun) |
| **Grocery Quick** | Linked view of **Grocery List (Print)** – grouped by aisle |
| **Nutrition** | Linked view of **Nutrition Summary** – single‑line totals |
| **Budget** | Linked view of **Budget Summary** – weekly spend |

Create a separate page called **Mobile Dashboard** and add the linked views with the **“Hide on Desktop”** toggle (click the three‑dot menu → *Hide on Desktop*). Switch between Desktop and Mobile dashboards via the top‑level navigation.

---

## 👨‍👩‍👧‍👦 Family Members (Database)

| Member | Age | Calorie Goal | Allergies | Preferences | Profile Link |
|--------|-----|--------------|-----------|-------------|--------------|
| Alice | 34 | 2000 | Dairy, Gluten | Low‑carb | (link) |
| Ben | 7 | 1500 | Peanuts | Kid‑friendly | (link) |
| Cara | 5 | 1300 | None | Sweet | (link) |

**Properties**

| Property | Type |
|----------|------|
| **Name** | Title |
| **Age** | Number |
| **Calorie Goal** | Number (kcal) |
| **Allergies** | Multi‑select (e.g., Dairy, Gluten, Peanuts, Shellfish) |
| **Preferences** | Multi‑select (e.g., Low‑carb, Kid‑friendly, Vegan) |
| **Profile Photo** | Files & media |
| **Weekly Calories** | Rollup → Meal Planner → Nutrition → Sum (Calories) |
| **Weekly Spend** | Rollup → Meal Planner → Budget → Sum (Cost) |

*Each family member gets a personal profile page (template button “New Member”).*

---

## 📅 Meal Planner (Database)

| Date | Day | Family Member(s) | Breakfast | Lunch | Dinner | Snacks | Recipe (Dinner) |
|------|-----|------------------|-----------|-------|--------|--------|-----------------|
| 2024‑07‑01 | Mon | Alice, Ben | Greek yogurt + berries | Turkey wrap | **Baked salmon** | Apple slices | R‑001 |
| 2024‑07‑02 | Tue | Alice, Ben | Oatmeal w/ banana | Chicken salad | **Stir‑fried tofu** | Carrot sticks | R‑003 |
| … | … | … | … | … | … | … | … |

**Key properties**

| Property | Type & Formula |
|----------|-----------------|
| **Date** | Date |
| **Day** | Formula: `formatDate(prop("Date"), "ddd")` |
| **Family Member(s)** | Relation → **Family Members** (multi‑select) |
| **Breakfast / Lunch / Dinner / Snacks** | Text |
| **Recipe (Dinner)** | Relation → **Recipes** |
| **Nutrition** | Rollup → Recipe (Dinner) → **Nutrition** (show original) |
| **Budget** | Rollup → Recipe (Dinner) → **Cost** (Sum) |
| **Allergens** | Rollup → Recipe (Dinner) → **Allergens** (Show unique) |

### 📆 Calendar View (Full‑Month)

1. Add a **Calendar** view named **“Weekly Menu (Calendar)”**.  
2. Set **Group by** → *Day of week* (Mon‑Sun).  
3. Enable **Drag‑and‑Drop** to reschedule meals instantly.  
4. Show the **Recipe (Dinner)** relation as the card title for quick access.

---

## 🍲 Recipes (Database)

| Recipe ID | Name | Tags | Prep Time | Cook Time | Servings | Ingredients (Qty) | Calories | Protein | Carbs | Fat | Allergens | Cost |
|----------|------|------|-----------|-----------|----------|-------------------|----------|---------|-------|-----|-----------|------|
| R‑001 | Baked salmon with lemon | protein, fish, 30‑min | 10 | 20 | 4 | 4 × salmon fillet, 1 lemon, 2 tbsp olive oil, pinch salt, pinch pepper | 720 | 60 g | 4 g | 44 g | Fish, None | $12 |
| R‑002 | Spaghetti Bolognese | pasta, beef, 45‑min | 15 | 30 | 6 | 500 g ground beef, 400 ml tomato sauce, 1 onion, 2 cloves garlic, 300 g spaghetti | 960 | 55 g | 110 g | 30 g | Gluten, None | $14 |
| R‑003 | Stir‑fried tofu & veggies | vegan, 30‑min | 10 | 15 | 4 | 400 g firm tofu, 2 cups broccoli, 1 bell pepper, 2 tbsp soy sauce, 1 tbsp sesame oil | 480 | 30 g | 20 g | 24 g | Soy, None | $9 |
| R‑004 | Chicken fajitas | protein, Mexican, 30‑min | 10 | 20 | 4 | 400 g chicken breast, 4 tortillas, 1 onion, 1 bell pepper, 2 tbsp fajita seasoning | 680 | 55 g | 45 g | 20 g | Gluten, None | $11 |
| R‑005 | Homemade pizza | family, 60‑min | 15 | 45 | 8 | 1 pizza dough, 200 ml tomato sauce, 250 g mozzarella, 100 g pepperoni, fresh basil | 1240 | 55 g | 130 g | 50 g | Gluten, Dairy | $18 |

**Properties**

| Property | Type |
|----------|------|
| **Recipe ID** | Text (unique) |
| **Name** | Title |
| **Tags** | Multi‑select |
| **Prep Time** | Number (minutes) |
| **Cook Time** | Number (minutes) |
| **Servings** | Number |
| **Ingredients** | Text (format “quantity ingredient”) |
| **Calories** | Number (kcal) |
| **Protein** | Number (g) |
| **Carbs** | Number (g) |
| **Fat** | Number (g) |
| **Allergens** | Multi‑select (Dairy, Gluten, Nuts, Soy, Shellfish, etc.) |
| **Cost** | Number (USD) |
| **Total Time** | Formula: `prop("Prep Time") + prop("Cook Time")` |
| **Suitable For** | Relation → **Family Members** (auto‑filtered, see Automation) |

> **Tip:** When entering ingredients, use the format `quantity unit ingredient` (e.g., `2 tbsp olive oil`). This enables accurate roll‑ups for cost and quantity.

---

## ✅ Prep Tasks (Database)

| Task | Associated Meal | Due Date | Priority | Status |
|------|----------------|----------|----------|--------|
| Marinate salmon | Baked salmon (R‑001) | 2024‑06‑30 | High | ✅ Done |
| Chop veggies for tofu stir‑fry | Stir‑fried tofu (R‑003) | 2024‑07‑02 | Medium | ⏳ Pending |
| Pre‑cook quinoa | Quinoa bowl (Lunch) | 2024‑07‑04 | Low | ⏳ Pending |
| Make pizza dough | Homemade pizza (R‑005) | 2024‑07‑04 | High | ✅ Done |
| Portion snack bags | Daily snacks | 2024‑07‑01 | Medium | ✅ Done |

**Properties**

| Property | Type |
|----------|------|
| **Task** | Title |
| **Associated Meal** | Relation → **Meal Planner** (or **Recipes**) |
| **Due Date** | Date (with Reminder) |
| **Priority** | Select (High, Medium, Low) |
| **Status** | Select (Pending, Done) |
| **Assigned To** | Relation → **Family Members** (optional) |

---

## 🛒 Grocery List (Rollup View)

1. **Create a linked database** of **Meal Planner** → add a **Rollup** property called **“Ingredient List”**:  
   - **Relation** → Recipe (Dinner) → **Ingredients** → *Show original*  
2. Add a **Rollup** called **“Quantity”** that **sums** the numeric part of each ingredient (use a formula in Recipes: `replaceAll(prop("Ingredients"), "[^0-9.]", "")` → Number).  
3. Add a **Rollup** called **“Cost”** → Recipe (Dinner) → **Cost** → *Sum*.  

**Grocery List view** (Table)

| Ingredient | Total Qty | Estimated Cost |
|------------|----------|----------------|
| salmon fillet | 4 pcs | $12 |
| lemon | 1 pcs | $0.5 |
| olive oil | 2 tbsp | $0.3 |
| … | … | … |

### 📥 Export / Print

- **One‑click PDF**: Add a **Template Button** named **“Export Grocery List (PDF)”** that runs the Notion **Export** action (via the native “Export” button on the view).  
- **CSV Export**: Click the three‑dot menu → *Export* → *CSV*.  
- **Zapier Sync**: Use the Zapier template **“Notion → Google Keep”** to push the list to a shared note for offline shopping.

---

## 📈 Nutrition Summary (Rollup)

| Week | Total Calories | Protein (g) | Carbs (g) | Fat (g) | Allergens (unique) |
|------|----------------|------------|-----------|--------|--------------------|
| 2024‑07‑01 – 2024‑07‑07 | 4 800 kcal | 250 g | 300 g | 150 g | Dairy, Gluten |

**How it works**

- In **Meal Planner**, add a **Rollup** called **“Nutrition”** → Recipe (Dinner) → **Calories / Protein / Carbs / Fat** → *Sum*.  
- Add a **Rollup** called **“Allergens”** → Recipe (Dinner) → **Allergens** → *Show unique*.  
- Create a **Table view** filtered to the current week and hide all columns except the roll‑ups. This view is displayed on the Dashboard as **Nutrition Summary**.

---

## 💰 Budget Summary (Rollup)

| Week | Total Ingredient Cost |
|------|-----------------------|
| 2024‑07‑01 – 2024‑07‑07 | $68 |

**How it works**

- In **Meal Planner**, the **Budget** roll‑up (see above) pulls the **Cost** from each linked recipe.  
- The **Budget Summary** view on the Dashboard shows the weekly total, helping you stay within your grocery budget.

---

## ⚙️ Settings & Automation

| Automation | How to Set Up |
|-----------|---------------|
| **Weekly Planner Reset** | 1️⃣ Create a **Template Button** on the Dashboard called **“New Week”**. <br>2️⃣ Action: *Create 7 new rows* in **Meal Planner** with dates auto‑filled (use `dateAdd(now(), 1, "days")` etc.). <br>3️⃣ Action: *Create a linked Grocery List view* for the new week. |
| **Auto‑populate Family‑Specific Meals** | 1️⃣ In **Recipes**, add a **Formula** `if(contains(prop("Allergens"), "Dairy") or contains(prop("Allergens"), "Gluten"), false, true)` → **“Is Family‑Safe”**. <br>2️⃣ In **Meal Planner**, set a **Filter** on the **Recipe (Dinner)** relation: `Is Family‑Safe = true` **AND** `Suitable For contains any of Family Member(s)`. |
| **Zapier Grocery Sync** | Use the pre‑built Zapier template **“Notion → Any.do”**: <br>• Trigger: New or Updated item in **Grocery List** view. <br>• Action: Create/Update task in Any.do (or Google Keep). |
| **Native Notion Reminder** | Enable **Reminders** on the **Due Date** field of **Prep Tasks** → they push to your phone. |
| **Monthly Budget Alert** | Add a **Formula** in **Family Members** → `if(prop("Weekly Spend") > (prop("Calorie Goal") * 0.1), "⚠️ Over budget", "✅ OK")`. Use a **Filtered view** on the Dashboard to surface any alerts. |
| **Export Button (PDF)** | Insert a **Button** block (via the “/button” command) → *Action*: **Export** current **Grocery List** view → **PDF**. (Works on desktop; mobile users can use the native share → Print). |

---

## 📥 How to Import into Notion (Ready‑to‑Use)

1. **Add the template to your workspace**  
   - Open the public template page (you’ll receive the link after purchase).  
   - Click **“Duplicate”** → choose the workspace where you want it.  
   - All databases, views, relations, roll‑ups, and buttons come pre‑configured.

2. **If you prefer the Markdown file** (the one you’re reading):  
   - Create a new page → click **Import** → select **Markdown & CSV** → upload this `.md` file.  
   - For each table, click the three‑dot menu → **Turn into → Table** (or **Board** for the Calendar view).  
   - Rename the databases exactly as indicated (Meal Planner, Recipes, Prep Tasks, Family Members, etc.).  
   - Re‑create the **Relation** and **Rollup** properties as described in each section.  
   - Add the **Dashboard**, **Mobile Dashboard**, and **Automation** button blocks.

3. **Finalize**  
   - Verify that the **Weekly Menu (Calendar)** shows the current week.  
   - Add a few test recipes and watch the **Nutrition**, **Budget**, and **Grocery List** roll‑ups update automatically.  
   - Test the **Export Grocery List (PDF)** button and the Zapier sync (if you enabled it).  

You now have a **complete, premium‑grade Meal‑Prep Planner** that handles nutrition, budgeting, family preferences, printable shopping lists, and automated weekly workflows—all optimized for both desktop and mobile use. Happy cooking!