# 🍽️ **Meal Planner & Grocery Master Template – Premium Edition**

> **Designed for busy families, health‑focused professionals, and anyone who wants a fully‑automated, budget‑aware, nutrition‑tracked meal‑prep system.**  
> All tables are ready‑to‑turn‑into‑Notion databases. Follow the **“How to import”** steps at the bottom to get a production‑ready workspace in seconds.

---  

## 1️⃣ Getting Started (Onboarding)

| Step | Description | Action |
|------|-------------|--------|
| **📹 Intro Video** | Watch the 3‑minute walkthrough (YouTube) to see the whole workflow in action. | <a href="https://youtu.be/your‑template‑tour" target="_blank">▶️ Play</a> |
| **🗂️ Sample Week** | Duplicate the pre‑filled **Sample Week** page (Monday‑Sunday) to see a complete end‑to‑end example. | Click **Duplicate** on the page title. |
| **🔧 Setup Wizard** | Use the toggles below to configure your pantry, default stores, and cost settings. | Expand each toggle and fill the fields. |
| **🚀 Go Live** | After the wizard, start planning your first week! | Click **Start Planning** button (linked to the Dashboard). |

<details>
<summary>🔧 Setup Wizard – Click to expand</summary>

### 1️⃣ Pantry Stock & Units  
1. Open **Ingredient Master List** → **New** → fill **Name**, **Default Unit**, **Cost per Unit**, **Pantry Qty**, **Expiration**.  
2. Use the **Unit Converter** formula (see below) to add alternative units (e.g., “1 lb = 16 oz”).

### 2️⃣ Store & Aisle Mapping  
1. Open **Store Directory** → add your favorite grocery stores (Instacart, Amazon Fresh, local market).  
2. For each **Aisle** in **Ingredient Master List**, select the store where you usually buy the item.  

### 3️⃣ Cost Settings  
1. Set your **Currency Symbol** in the **Settings** page (default “$”).  
2. Adjust **Default Markup** (e.g., 0 % for exact cost, 10 % for “budget buffer”).  

</details>

---  

## 2️⃣ Dashboard Overview (Mobile‑Optimized)

| View | Description | Mobile Layout |
|------|-------------|---------------|
| **Today** | Shows today’s meals (breakfast, lunch, dinner, snacks) with quick‑add buttons. | Compact list with icons; tap a meal to open the recipe. |
| **Weekly Planner** | Calendar view of all meals. Drag‑and‑drop recipes to any day. | Full‑screen calendar (Notion mobile supports this natively). |
| **Shopping List** | Auto‑generated list grouped by **Store → Aisle**, with checkboxes and direct **Instacart** links. | Vertical list with large checkboxes; swipe to mark bought. |
| **Prep Tasks** | Checklist of batch‑cooking steps ordered by day. | Toggle‑style checklist for quick tap‑complete. |
| **Budget & Spend** | Weekly spend summary, cost per store, and remaining budget gauge. | Simple bar‑chart view (Notion’s “Bar” visualization). |
| **Nutrition Summary** | Total calories, protein, carbs, fat for the week (auto‑rolled up). | Numeric cards with color‑coded bars. |

> **Tip:** Pin the **Dashboard** to your Notion sidebar (desktop) or add it to your mobile “Favorites” for one‑tap access each morning.

---  

## 3️⃣ Ingredient Master List (Master Ingredient DB)

| Property | Type | Example | Formula / Note |
|----------|------|---------|----------------|
| **Name** | Title | “Chicken breast” | — |
| **Default Unit** | Select | “pcs”, “lb”, “oz”, “cup” | Pre‑populated list. |
| **Cost per Unit** | Number (currency) | 2.99 | → **Total Cost** formula uses this. |
| **Pantry Qty** | Number | 4 | Current stock at home. |
| **Pantry Expiration** | Date | 2024‑08‑15 | Triggers **Expiration Reminder** (see below). |
| **Unit Conversion** | Formula | `if(prop("Default Unit") == "lb", "1 lb = 16 oz", "")` | Add more conversions as needed. |
| **Total Cost** | Formula | `prop("Cost per Unit") * prop("Pantry Qty")` | Shows value of stocked amount. |
| **Store** | Relation → **Store Directory** | “Instacart” | Used for grouped shopping list. |
| **Aisle** | Select | “Meat” | Matches **Grocery List** grouping. |
| **Tags** | Multi‑select | “Protein”, “Freezer” | For filtering. |
| **Barcode** | Text | “012345678905” | Optional – used with Zapier barcode scanner (see Integration guide). |

> **🔔 Expiration Reminder:** Add a **Formula** property `Next Expiration` → `dateAdd(prop("Pantry Expiration"), -3, "days")` and set a **Reminder** on that date to get a notification 3 days before items go bad.

---  

## 4️⃣ Store Directory

| Property | Type | Example |
|----------|------|---------|
| **Store Name** | Title | “Instacart” |
| **Website URL** | URL | `https://www.instacart.com` |
| **Default Aisle Mapping** | Text | “Meat → Meat, Produce → Produce, Bulk → Bulk” |
| **Icon** | File (emoji) | 🛒 |
| **API Integration** | Text | “Zapier – Instacart Add‑to‑Cart” (reference in Integration guide) |

---  

## 5️⃣ Meal Library (Recipes)

| Property | Type | Example | Formula / Note |
|----------|------|---------|----------------|
| **Recipe Name** | Title | “Chicken & Veggie Stir‑Fry” |
| **Category** | Select | “Dinner” |
| **Servings** | Number | 4 |
| **Prep Time** | Number (min) | 15 |
| **Cook Time** | Number (min) | 10 |
| **Total Time** | Formula | `prop("Prep Time") + prop("Cook Time")` |
| **Calories per Serving** | Number | 350 |
| **Protein (g)** | Number | 30 |
| **Carbs (g)** | Number | 20 |
| **Fat (g)** | Number | 12 |
| **Tags** | Multi‑select | “#Quick”, “#LowCarb”, “#Family” |
| **Source** | Text | “Family favorite” |
| **Recipe Image** | File | (upload) |
| **Ingredients** | Relation → **Recipe Ingredients** (many) | — |
| **Cost per Serving** | Rollup (from Recipe Ingredients → **Total Cost**) | `sum(prop("Quantity")) * related ingredient cost` |
| **Nutrition Rollup** | Rollup (from Recipe Ingredients → **Macro Totals**) | Auto‑sum of macros. |
| **Icon** | Emoji | 🍲 |

---  

### 5.1 Recipe Ingredients (junction table)

| Property | Type | Example |
|----------|------|---------|
| **Recipe** | Relation → **Meal Library** (single) |
| **Ingredient** | Relation → **Ingredient Master List** (single) |
| **Quantity per Serving** | Number | 0.5 |
| **Unit** | Select (auto‑filled from Ingredient → **Default Unit**) |
| **Cost per Serving** | Formula | `prop("Quantity per Serving") * prop("Ingredient").cost per unit` |
| **Macro Totals** | Rollup (Ingredient → **Macro per Unit**) | `prop("Quantity per Serving") * macro per unit` |

> **How it works:** When you change **Servings** in a recipe, the **Grocery List Generator** multiplies each ingredient’s *Quantity per Serving* by the recipe’s *Servings* and aggregates across the week.

---  

## 6️⃣ Weekly Meal Planner

| Property | Type | Example |
|----------|------|---------|
| **Date** | Date (Calendar) | 2024‑07‑01 |
| **Meal Type** | Select | “Breakfast”, “Lunch”, “Dinner”, “Snack” |
| **Recipe** | Relation → **Meal Library** (single) |
| **Servings Planned** | Formula | `prop("Recipe").Servings` (editable if you want extra portions) |
| **Notes** | Text | “Add extra avocado” |

**Views**  

1. **Calendar** – shows each meal as a card (icon = recipe icon).  
2. **Table – Full Week** – grouped by **Day** (Monday → Sunday).  
3. **Mobile List** – minimal columns (Recipe + Icon).  

> **Tip:** Drag a recipe from **Meal Library** onto a calendar slot; the **Servings Planned** auto‑fills. Adjust the number if you need more/less.

---  

## 7️⃣ Grocery List Generator (Auto‑Calculated)

| Property | Type | Example | Formula / Rollup |
|----------|------|---------|------------------|
| **Ingredient** | Relation → **Ingredient Master List** (single) |
| **Total Qty Needed** | Rollup (Weekly Meal Planner → **Recipe Ingredients** → `prop("Quantity per Serving") * Weekly Meal Planner.Servings Planned`) | `sum(values)` |
| **Unit** | Formula | `prop("Ingredient").Default Unit` |
| **Store** | Rollup (Ingredient → **Store**) | — |
| **Aisle** | Rollup (Ingredient → **Aisle**) | — |
| **Needed For** | Rollup (Weekly Meal Planner → **Recipe**) | List of recipes using the ingredient. |
| **Cost per Unit** | Rollup (Ingredient → **Cost per Unit**) | — |
| **Total Cost** | Formula | `prop("Total Qty Needed") * prop("Cost per Unit")` |
| **Buy?** | Checkbox | — |
| **Instacart Link** | Formula | `concat("https://www.instacart.com/search?query=", replaceAll(prop("Ingredient").Name, " ", "%20"))` |
| **Amazon Fresh Link** | Formula | `concat("https://www.amazon.com/s?k=", replaceAll(prop("Ingredient").Name, " ", "+"))` |

**Views**  

- **Grouped by Store → Aisle** (default).  
- **Budget View** – shows **Total Cost** sum at the bottom.  
- **Mobile Checklist** – only **Ingredient**, **Qty**, **Buy?** columns, large checkboxes.

> **Auto‑Update:** When you edit **Servings** in the Weekly Planner, the **Total Qty Needed** and **Total Cost** instantly recalculate.

---  

## 8️⃣ Budget & Spend Tracker

| Property | Type | Example |
|----------|------|---------|
| **Week Starting** | Date (Start of week) |
| **Store** | Select (Instacart, Amazon Fresh, Local Market) |
| **Planned Spend** | Rollup (Grocery List → **Total Cost**) – sum |
| **Actual Spend** | Number (currency) – user enters receipt total |
| **Difference** | Formula | `prop("Planned Spend") - prop("Actual Spend")` |
| **% of Budget Used** | Formula | `if(prop("Planned Spend") == 0, 0, prop("Actual Spend") / prop("Planned Spend"))` |
| **Budget Gauge** | Formula (for visual bar) | `format(round(prop("% of Budget Used") * 100, 0)) + "%" ` |

**Views**  

- **Weekly Summary** – Table grouped by **Week Starting**.  
- **Bar Chart** – Shows **% of Budget Used** per week (use Notion’s “Bar” visualization).  

> **Tip:** Set a weekly reminder (e.g., Sunday 8 pm) to fill **Actual Spend** from your receipts. The gauge instantly tells you if you’re over/under budget.

---  

## 9️⃣ Prep & Batch‑Cooking Tasks

| Property | Type | Example |
|----------|------|---------|
| **Task** | Title | “Cook a big batch of quinoa” |
| **Day** | Date (linked to week) |
| **Completed** | Checkbox |
| **Related Recipes** | Relation → **Meal Library** (multiple) |
| **Estimated Time** | Number (min) |
| **Notes** | Text |

**Views**  

- **Board by Day** – Drag tasks to reorder.  
- **Checklist (Mobile)** – Only **Task** + **Completed** columns.

---  

## 🔟 Nutrition Tracker (Dynamic)

| Property | Type | Example |
|----------|------|---------|
| **Date** | Date |
| **Total Calories** | Rollup (Weekly Meal Planner → **Meal Library** → **Calories per Serving**) – sum |
| **Protein (g)** | Rollup (Meal Library → **Protein**) – sum |
| **Carbs (g)** | Rollup (Meal Library → **Carbs**) – sum |
| **Fat (g)** | Rollup (Meal Library → **Fat**) – sum |
| **Cost** | Rollup (Grocery List → **Total Cost**) – sum |
| **Notes** | Text |

**Views**  

- **Weekly Summary** – Table with daily rows.  
- **Chart** – Line chart of calories over the week (Notion’s “Line” view).  

> **Automation:** When you add a recipe to the Weekly Planner, the nutrition fields auto‑populate via roll‑ups – no manual entry required.

---  

## 📱 Mobile‑Optimized Layout

Create a **Mobile Dashboard** page (copy of the main Dashboard) with the following view settings:

| Section | View Type | Columns Shown |
|---------|-----------|---------------|
| **Today** | Table (compact) | Recipe Icon, Meal Type, Servings, ✅ |
| **Shopping List** | List | Ingredient, Qty, Buy? (large checkbox) |
| **Prep Tasks** | Board (list) | Task, Completed |
| **Budget** | Table | Store, Planned, Actual, Difference |
| **Nutrition** | Table | Calories, Protein, Carbs, Fat |

**Instructions for mobile users:**  
1. Tap the **“+”** button on the **Shopping List** to add a missing item quickly.  
2. Swipe left on any **Prep Task** to mark complete.  
3. Use the **Instacart Link** column (tap to open the store app).  

---  

## 🔗 Integration & Automation Guide

| Integration | What it does | How to set up (no‑code) |
|------------|--------------|------------------------|
| **Instacart / Amazon Fresh Add‑to‑Cart** | One‑click links from the Grocery List add items to your online cart. | The **Instacart Link** and **Amazon Fresh Link** formulas generate a search URL. Click the link → add to cart manually. |
| **Barcode Scanning** | Scan a product’s barcode on your phone → auto‑populate the Ingredient Master List. | 1. Install **Zapier** → “Notion + Scanbot” (or any barcode‑scanner app). <br>2. Create a Zap: **Trigger** = New Photo in Scanbot → **Action** = Find or Create Record in Notion (Ingredient Master List) using the scanned barcode text. |
| **Automatic Grocery Sync** | When you add a recipe, the Grocery List updates automatically. | Already built‑in via Relations & Rollups (see Grocery List Generator). |
| **Weekly Spend Reminder** | Sends you a Slack/Email reminder to fill **Actual Spend**. | Use **Make.com**: <br>1. Schedule → Every Sunday 8 pm. <br>2. Search Notion for the latest **Budget & Spend Tracker** page. <br>3. Send message with link. |
| **Expiration Alerts** | Notion notification 3 days before any pantry item expires. | The **Next Expiration** formula (see Ingredient Master List) + a reminder set on that date. |
| **Export to CSV** | Export your weekly grocery list for offline printing. | In **Grocery List Generator**, click **⋮⋮ → Export → CSV**. |

---  

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

1. **Create a new page** in your workspace where you want the template.  
2. Click **Import → Markdown & CSV**, select this `.md` file. Notion will create headings and plain tables.  
3. **Convert each table to a database:**  
   - Click the three‑dot menu on a table → **Turn into → Table – Full page** (or **Table – Inline** if you prefer it inside a page).  
   - Rename the database exactly as shown (e.g., “Ingredient Master List”).  
4. **Set property types** (see the property tables above).  
5. **Create Relations & Rollups:**  
   - **Meal Library → Recipe Ingredients** (Relation, many‑to‑many).  
   - **Recipe Ingredients → Ingredient Master List** (Relation).  
   - **Weekly Meal Planner → Meal Library** (Relation).  
   - **Grocery List Generator**: add Rollups for **Total Qty Needed**, **Total Cost**, **Store**, **Aisle**, **Needed For**.  
   - **Budget & Spend Tracker**: Rollup **Planned Spend** from **Grocery List Generator**.  
   - **Nutrition Tracker**: Rollups from **Meal Library** (macros) and **Grocery List Generator** (cost).  
6. **Add Formulas** exactly as written in the tables (copy‑paste into the Formula field).  
7. **Create Views** (Calendar, Board, Grouped, Mobile List) as described in each section.  
8. **Duplicate the “Sample Week”** page to start planning your own week.  
9. **Run the Onboarding Wizard** (section 1) to fill your pantry, stores, and cost settings.  

> **Final polish:**  
> - Upload cover images for each database (e.g., a pantry photo for **Ingredient Master List**, a grocery cart for **Grocery List Generator**).  
> - Assign emojis to each page (🍎, 🛒, 📊, 🗓️, 🍳) for instant visual identification.  
> - Set the **Dashboard** page as your workspace **Home** (click **⋮⋮ → Set as Home**).  

Enjoy a fully automated, budget‑smart, nutrition‑tracked meal‑prep system that works flawlessly on desktop **and** mobile! 🎉