|
1
|
--- |
|
2
|
name: meal-planner |
|
3
|
description: Create personalized meal plans with macros, shopping lists, and prep guides. |
|
4
|
--- |
|
5
|
|
|
6
|
# Meal Planner & Fitness Schedule |
|
7
|
|
|
8
|
Create personalized meal plans with calculated macro targets, shopping lists, and training schedules. |
|
9
|
|
|
10
|
**DISCLAIMER: General nutrition and fitness information only — not medical or dietetic advice. Users with medical conditions, eating disorder history, pregnancy, or on medications should consult a registered dietitian or physician.** |
|
11
|
|
|
12
|
## When to Use |
|
13
|
|
|
14
|
- User wants a weekly meal plan hitting specific macros |
|
15
|
- User needs a shopping list generated from a plan |
|
16
|
|
|
17
|
- User wants a training split paired with nutrition |
|
18
|
- User wants to adjust an existing plan (plateau, weight change, preference change) |
|
19
|
|
|
20
|
## When NOT to Use |
|
21
|
|
|
22
|
- Medical dietary needs (renal, diabetic, celiac management) → refer to RD |
|
23
|
- Single recipe creation → use recipe-creator skill |
|
24
|
|
|
25
|
- Health data analysis → use personal-health skill |
|
26
|
|
|
27
|
## Overlap with recipe-creator Skill |
|
28
|
|
|
29
|
When a meal in the plan is complex enough to need step-by-step instructions (e.g., "Chicken Parmesan"), the meal-planner skill defines *what* to eat and *when*; the recipe-creator skill builds the full recipe (ingredients, steps, timers, timeline). If the user's project has a recipe database, link meals to recipe IDs. If standalone, embed simplified cooking notes in the meal item. |
|
30
|
|
|
31
|
## Step 1: Gather Inputs — Full Profile |
|
32
|
|
|
33
|
### Required |
|
34
|
|
|
35
|
- Goal: fat loss / maintenance / muscle gain |
|
36
|
- Sex, age, height, weight |
|
37
|
|
|
38
|
- Activity level (see multiplier table below) |
|
39
|
- Dietary restrictions / allergies |
|
40
|
|
|
41
|
### Eating Schedule & Preferences (ask explicitly) |
|
42
|
|
|
43
|
These inputs have the biggest impact on adherence. Do not skip them. |
|
44
|
|
|
45
|
| Input | Why it matters | Example | |
|
46
|
|
|
47
|
|---|---|---| |
|
48
|
|
|
49
|
| **Eating window / fasting pattern** | Determines number of meals, slot names, and calorie distribution. IF (16:8, 20:4, OMAD) users skip breakfast entirely — never plan meals outside their window. | "I skip breakfast, first meal at noon" | |
|
50
|
|
|
51
|
| **Meals-per-day preference** | Some people want 3 big meals, others want 5 smaller ones. Respect this. | "4 meals" | |
|
52
|
|
|
53
|
| **Food preferences / cuisine** | Build around foods the user already likes. Ask: "What are 5 meals you eat regularly and enjoy?" and "Any foods you hate?" | "I like burgers, burritos, stir-fry" | |
|
54
|
|
|
55
|
| **Cooking time per meal** | Determines complexity. 15 min = sheet pan & stir-fry only. 45 min = full recipes. | "30–45 min max" | |
|
56
|
|
|
57
|
| **Budget** | Affects protein source choices (chicken thigh vs. salmon) and organic vs. conventional. | "Moderate" | |
|
58
|
|
|
59
|
| **Cooking skill** | Beginner = fewer techniques, clearer instructions. Advanced = more variety. | "Intermediate" | |
|
60
|
|
|
61
|
| **Household size** | Affects portion scaling and shopping quantities. | "Cooking for 1" | |
|
62
|
|
|
63
|
### Dynamic Meal Slots |
|
64
|
|
|
65
|
**Do not hardcode meal names.** Derive slot names and timing from the user's eating window: |
|
66
|
|
|
67
|
| Pattern | Slots | Timing | |
|
68
|
|
|
69
|
|---|---|---| |
|
70
|
|
|
71
|
| Standard 3-meal | breakfast, lunch, dinner | 7am, 12pm, 6:30pm | |
|
72
|
|
|
73
|
| Standard + snacks | breakfast, snack-am, lunch, snack-pm, dinner | 7am, 10am, 12pm, 3pm, 6:30pm | |
|
74
|
|
|
75
|
| 16:8 IF (noon start) | lunch, snack, dinner, evening | 12pm, 3pm, 6:30pm, 8:30pm | |
|
76
|
|
|
77
|
| 20:4 IF | meal-1, meal-2 | 4pm, 7pm | |
|
78
|
|
|
79
|
| OMAD | dinner | 6pm | |
|
80
|
|
|
81
|
| Morning faster + pre-bed | lunch, snack, dinner, pre-bed | 12pm, 3pm, 6:30pm, 9:30pm | |
|
82
|
|
|
83
|
Calorie distribution should match the window: for 4-meal IF, roughly 30% / 12% / 35% / 23% across slots (larger meals at lunch and dinner, lighter snacks). Adjust to keep protein per-meal at 0.3–0.4 g/kg (~25–50g) for optimal MPS distribution. |
|
84
|
|
|
85
|
If body fat % is known, use Katch-McArdle instead of Mifflin-St Jeor — it's more accurate for lean or obese individuals. |
|
86
|
|
|
87
|
## Step 2: Calculate Energy Target |
|
88
|
|
|
89
|
**Mifflin-St Jeor BMR** (validated as most accurate predictive equation for the general population, ±10% for most adults): |
|
90
|
|
|
91
|
```text |
|
92
|
|
|
93
|
Men: BMR = (10 × weight_kg) + (6.25 × height_cm) − (5 × age) + 5 |
|
94
|
|
|
95
|
Women: BMR = (10 × weight_kg) + (6.25 × height_cm) − (5 × age) − 161 |
|
96
|
|
|
97
|
``` |
|
98
|
|
|
99
|
**Katch-McArdle** (use if body fat % is known — more accurate at body-composition extremes): |
|
100
|
|
|
101
|
```text |
|
102
|
|
|
103
|
BMR = 370 + (21.6 × lean_mass_kg) where lean_mass_kg = weight_kg × (1 − bodyfat%) |
|
104
|
|
|
105
|
``` |
|
106
|
|
|
107
|
**TDEE = BMR × activity multiplier:** |
|
108
|
|
|
109
|
| Level | Multiplier | Description | |
|
110
|
|
|
111
|
|---|---|---| |
|
112
|
|
|
113
|
| Sedentary | 1.2 | Desk job, minimal deliberate exercise | |
|
114
|
|
|
115
|
| Lightly active | 1.375 | 1–3 sessions/week | |
|
116
|
|
|
117
|
| Moderately active | 1.55 | 3–5 sessions/week | |
|
118
|
|
|
119
|
| Very active | 1.725 | 6–7 sessions/week | |
|
120
|
|
|
121
|
| Extra active | 1.9 | Athlete or physical labor + training | |
|
122
|
|
|
123
|
People consistently overestimate their activity — when in doubt, pick the lower multiplier and adjust upward after 2 weeks of real-world data. |
|
124
|
|
|
125
|
**Goal adjustment:** |
|
126
|
|
|
127
|
- Fat loss: TDEE − 20–25% (typically 400–600 kcal deficit). Targets ~0.5–1% bodyweight/week. Steeper deficits accelerate muscle loss. |
|
128
|
- Maintenance: TDEE ± 0 |
|
129
|
|
|
130
|
- Muscle gain: TDEE + 10–15% (typically 200–400 kcal surplus). Larger surpluses mostly add fat, not muscle, in trained individuals. |
|
131
|
|
|
132
|
## Step 3: Set Macros — Evidence-Based Targets |
|
133
|
|
|
134
|
### Protein (set this first, in g/kg — not as a percentage) |
|
135
|
|
|
136
|
| Goal | Target | Evidence | |
|
137
|
|
|
138
|
|---|---|---| |
|
139
|
|
|
140
|
| General health / sedentary | 0.8–1.2 g/kg | RDA is 0.8 g/kg — the minimum to prevent deficiency, not an optimum | |
|
141
|
|
|
142
|
| Muscle gain + resistance training | **1.6–2.2 g/kg** | Morton et al. 2018 meta-analysis (49 RCTs, n=1,863, *BJSM*): gains in fat-free mass plateau at 1.62 g/kg/day (95% CI: 1.03–2.20). The upper CI bound (~2.2 g/kg) is recommended for those maximizing hypertrophy. Confirmed by Nunes et al. 2022 (74 RCTs). | |
|
143
|
|
|
144
|
| Fat loss (preserving lean mass) | 1.8–2.7 g/kg | Higher end of range compensates for the muscle-sparing effect of protein during energy deficit | |
|
145
|
|
|
146
|
| Endurance athletes | 1.2–1.6 g/kg | ISSN position stand | |
|
147
|
|
|
148
|
In imperial: 1.6–2.2 g/kg ≈ 0.7–1.0 g/lb. Distribute across 3–5 meals at 0.3–0.4 g/kg per meal (~25–40 g) — muscle protein synthesis response plateaus per-sitting. |
|
149
|
|
|
150
|
### Fat |
|
151
|
|
|
152
|
Minimum ~0.5 g/kg bodyweight (hormone synthesis floor). Typical range 0.8–1.2 g/kg, or 20–35% of calories. Going below 20% long-term risks fat-soluble vitamin and hormone issues. |
|
153
|
|
|
154
|
### Carbohydrates |
|
155
|
|
|
156
|
Fill remaining calories after protein and fat are set. `carbs_g = (target_kcal − protein_g×4 − fat_g×9) / 4` |
|
157
|
|
|
158
|
### Fiber |
|
159
|
|
|
160
|
**14 g per 1,000 kcal** (Dietary Guidelines for Americans) — roughly 25 g/day for women, 38 g/day for men at maintenance. Most plans undershoot this. Check it explicitly. |
|
161
|
|
|
162
|
## Step 4: Build the Plan |
|
163
|
|
|
164
|
### Food Selection Philosophy |
|
165
|
|
|
166
|
**Adherence-first meal design** — build meals around foods the user already eats and enjoys. The goal is to fit their existing food culture into their macro targets, not to impose a "clean eating" template. |
|
167
|
|
|
168
|
- **Use their stated preferences** — if they said they like burritos, build a macro-friendly burrito bowl. Don't replace it with a salad. |
|
169
|
- **Flavor over restriction** — use real cheese, butter, sauces in controlled portions rather than eliminating them. A plan that tastes good gets followed. |
|
170
|
|
|
171
|
- **Practical portions** — specify gram weights for precision but also include household measures (e.g., "200g / ~1 cup cooked") so people without scales can approximate. |
|
172
|
- **Protein anchoring** — every meal should have a clear protein source as its anchor. Build the rest of the plate around it. |
|
173
|
|
|
174
|
- **Vegetable integration** — don't just add a side salad. Integrate vegetables into the meal itself (peppers in a stir-fry, spinach in a smoothie, roasted broccoli with garlic butter). This is especially important for users who say they don't like vegetables. |
|
175
|
|
|
176
|
### Variety & Repetition Balance |
|
177
|
|
|
178
|
Rotate 3–4 templates per meal slot across the week — enough variety to prevent burnout, enough repetition to keep prep and shopping simple. The sweet spot: |
|
179
|
|
|
180
|
- **2–3 lunch templates** — repeat 2–3 times each across the week |
|
181
|
- **5–6 dinner templates** — one unique dinner most nights (this is where people want variety) |
|
182
|
|
|
183
|
- **2–3 snack templates** — these can repeat heavily; people don't mind eating the same snack daily |
|
184
|
- **1–2 evening/pre-bed options** — simple, protein-focused, low effort |
|
185
|
|
|
186
|
```text |
|
187
|
|
|
188
|
## Monday — Target: 2,400 kcal | 186P / 225C / 84F (16:8 IF, noon start) |
|
189
|
|
|
190
|
Lunch (710 kcal): Chicken burrito bowl — chicken thigh 170g + rice 200g + black beans 80g + salsa + cheese 25g + avocado 40g → 48P / 78C / 22F |
|
191
|
|
|
192
|
Snack (310 kcal): Greek yogurt 200g + honey 10g + almonds 20g → 24P / 22C / 14F |
|
193
|
|
|
194
|
Dinner (710 kcal): Garlic butter steak & potatoes — sirloin 200g + baby potatoes 250g + roasted broccoli 120g + butter 10g → 58P / 52C / 30F |
|
195
|
|
|
196
|
Evening (630 kcal): Protein shake — whey 35g + banana + PB 20g + milk 250ml + oats 30g → 48P / 62C / 20F |
|
197
|
|
|
198
|
Daily total: 2,360 kcal | 178P / 214C / 86F | Fiber: ~21g |
|
199
|
|
|
200
|
``` |
|
201
|
|
|
202
|
**Nutrition data sources** — for accurate macros, query the USDA FoodData Central API rather than guessing: |
|
203
|
|
|
204
|
- Base URL: `https://api.nal.usda.gov/fdc/v1/` — free API key from api.data.gov, 1,000 req/hr limit |
|
205
|
- Search: `GET /foods/search?query=chicken breast&api_key=KEY` |
|
206
|
|
|
207
|
- Lookup: `GET /food/{fdcId}?api_key=KEY` returns full nutrient profile per 100g |
|
208
|
- Python clients on PyPI: `fooddatacentral` (simple), `usda-fdc` (includes DRI comparison + recipe aggregation) |
|
209
|
|
|
210
|
- Data is public domain (CC0). Branded foods update monthly. |
|
211
|
|
|
212
|
## Step 5: Shopping List |
|
213
|
|
|
214
|
Aggregate ingredients across all days, round to purchasable units, organize by store section: |
|
215
|
|
|
216
|
```text |
|
217
|
|
|
218
|
PROTEINS: Chicken thighs 800g · Chicken breast 700g · Sirloin steak 400g · Salmon 180g · Eggs 1 dozen |
|
219
|
|
|
220
|
DAIRY: Greek yogurt 550g · Cottage cheese 450g · Cheddar cheese 105g · Whole milk 750ml |
|
221
|
|
|
222
|
PRODUCE: Bananas 4 · Bell peppers 4 · Broccoli 1 head · Avocado 2 · Baby potatoes 250g |
|
223
|
|
|
224
|
GRAINS/PANTRY: White rice 1kg · Flour tortillas 8 · Oats 90g · Black beans 1 can |
|
225
|
|
|
226
|
NUTS/OILS: Peanut butter 1 jar · Almonds 20g · Olive oil · Honey |
|
227
|
|
|
228
|
``` |
|
229
|
|
|
230
|
**Aggregation rules:** |
|
231
|
|
|
232
|
- Combine same ingredients across days (e.g., 3 days × 200g rice = 600g → round to 1kg bag) |
|
233
|
- Use purchasable units (1 can, 1 bunch, 1 dozen) not fractional quantities |
|
234
|
|
|
235
|
- Group by store section for efficient shopping flow |
|
236
|
- Note items that can be bought frozen for longer shelf life |
|
237
|
|
|
238
|
## Step 6: Meal Prep Logistics |
|
239
|
|
|
240
|
**Single prep session (Sun, ~90 min):** Cook all grains. Roast two sheet-pans of proteins + veg. Portion into containers. Prep overnight oats for 3 days. |
|
241
|
|
|
242
|
**USDA-backed refrigerated shelf life:** cooked poultry/meat 3–4 days · cooked fish 3–4 days · cooked grains 4–6 days · cut raw veg 3–5 days. Freeze anything for day 5+. |
|
243
|
|
|
244
|
**Prep guide format:** Number each step with estimated time (active + passive). Group by what can run in parallel (e.g., "while rice cooks, grill chicken"). The prep guide should feel like a cooking flow, not a to-do list. |
|
245
|
|
|
246
|
## Step 7: Hydration & Supplements |
|
247
|
|
|
248
|
### Hydration |
|
249
|
|
|
250
|
General target: **~35 ml per kg bodyweight** per day (e.g., 93 kg × 35 = 3.25 L). Increase by 500–750 ml on training days. Signs of adequate hydration: pale yellow urine by mid-morning. |
|
251
|
|
|
252
|
Practical tips: keep a water bottle at the desk, drink 500 ml upon waking, have 250 ml with each meal. |
|
253
|
|
|
254
|
### Supplements (evidence-supported only) |
|
255
|
|
|
256
|
Only recommend supplements with strong evidence. Do not recommend proprietary blends or unproven supplements. |
|
257
|
|
|
258
|
| Supplement | Dose | Evidence | Who needs it | |
|
259
|
|
|
260
|
|---|---|---|---| |
|
261
|
|
|
262
|
| Creatine monohydrate | 3–5 g/day, no loading needed | Most-studied supplement in sports nutrition. Increases strength, lean mass, and exercise capacity (ISSN position stand, 2017). | Anyone doing resistance training | |
|
263
|
|
|
264
|
| Vitamin D3 | 1,000–2,000 IU/day | Widespread deficiency, especially at higher latitudes. Supports bone health, immune function, and may support muscle function. | Most people, especially if limited sun exposure | |
|
265
|
|
|
266
|
| Omega-3 (EPA/DHA) | 1–2 g combined EPA+DHA/day | Anti-inflammatory, cardiovascular benefits. Only if fish intake is <2 servings/week. | People who don't eat fish regularly | |
|
267
|
|
|
268
|
| Magnesium | 200–400 mg/day (glycinate or citrate) | Common deficiency. Supports sleep, muscle recovery, stress. | If dietary intake is low (common on calorie deficits) | |
|
269
|
|
|
270
|
Do NOT recommend: testosterone boosters, fat burners, BCAAs (redundant if protein is adequate), collagen for muscle building, "detox" products. |
|
271
|
|
|
272
|
## Step 8: Plan Adjustments Over Time |
|
273
|
|
|
274
|
### When to Recalculate |
|
275
|
|
|
276
|
Plans are not static. Build in adjustment checkpoints: |
|
277
|
|
|
278
|
| Trigger | Action | |
|
279
|
|
|
280
|
|---|---| |
|
281
|
|
|
282
|
| **After 2 weeks** | Compare average weekly weight loss rate to target. If losing >1.5% BW/week, increase calories by 100–200. If weight is flat, decrease by 100–200 or verify tracking accuracy first. | |
|
283
|
|
|
284
|
| **Every 5 kg (~11 lbs) of weight change** | Recalculate BMR and TDEE — they decrease as body mass drops. A 10 lb loss typically reduces TDEE by ~100–150 kcal. | |
|
285
|
|
|
286
|
| **Plateau (>3 weeks no change in 7-day rolling average)** | First check: are portions actually being measured? Calorie creep from eyeballing is the \#1 cause. Then: add 1–2 cardio sessions/week OR reduce calories by 100–150. Do NOT slash calories aggressively. | |
|
287
|
|
|
288
|
| **Goal reached** | Reverse diet: increase calories by 100/week back toward maintenance over 4–6 weeks. Do not jump straight to TDEE — leptin and metabolic adaptation need time. | |
|
289
|
|
|
290
|
| **Taste fatigue / boredom** | Swap out stale meals using alternatives from the same slot. Keep the same macros — change the food, not the structure. | |
|
291
|
|
|
292
|
### Weight Tracking Guidance |
|
293
|
|
|
294
|
Daily weight fluctuates ±1–2 kg (2–4 lbs) from water, glycogen, gut contents, sodium intake, and menstrual cycle. This is normal and not fat gain. |
|
295
|
|
|
296
|
- **Weigh daily**, same time (after waking, after bathroom, before eating) |
|
297
|
- **Use a 7-day rolling average** — this is your actual trend line |
|
298
|
|
|
299
|
- **Compare weekly averages**, not individual days |
|
300
|
- **Expect a 2–4 lb drop in week 1** that's mostly water/glycogen, not fat. Real fat loss rate starts from week 2–3. |
|
301
|
|
|
302
|
## Fitness Schedule (Condensed) |
|
303
|
|
|
304
|
**Beginner (<6 mo): Full body 3×/week** (Mon/Wed/Fri). Each session: 1 squat pattern, 1 hinge, 1 push, 1 pull, 1 carry/core. 3×8–12. Simplest progression: add 2.5 kg when all sets hit the top of the rep range. |
|
305
|
|
|
306
|
**Intermediate (6 mo–2 yr): Upper/Lower 4×/week.** Mon upper-push emphasis, Tue lower-quad, Thu upper-pull, Fri lower-hinge. |
|
307
|
|
|
308
|
**Advanced: Push/Pull/Legs 5–6×/week.** |
|
309
|
|
|
310
|
**Volume guidelines** (per muscle group per week, meta-analytic consensus): 10–20 hard sets for hypertrophy. Below 10 is maintenance; above 20 shows diminishing returns and rising injury risk for most. |
|
311
|
|
|
312
|
**Rep ranges:** 3–6 strength-biased · 6–15 hypertrophy (all ranges build muscle if taken near failure; hypertrophy is not rep-range-specific) · 15+ endurance-biased. |
|
313
|
|
|
314
|
**Progressive overload is mandatory** — log every session. No log → no plan. |
|
315
|
|
|
316
|
**Recovery:** ≥1 full rest day/week. 7–9 hrs sleep. Deload (−40–50% volume) every 4–6 weeks. |
|
317
|
|
|
318
|
**Cardio:** General health → 150 min/week moderate (WHO guideline). Fat-loss phase → add 2–3 × 20–30 min sessions, steady-state or intervals. Muscle-gain phase → keep cardio to 1–2 light sessions to minimize interference. |
|
319
|
|
|
320
|
## Output: Always Build a Visual Web App |
|
321
|
|
|
322
|
**Every meal plan MUST be delivered as an interactive React + Vite web app.** Do not output plans as plain text or markdown — always build and deploy a visual website. |
|
323
|
|
|
324
|
### Design Philosophy: Mobile-First |
|
325
|
|
|
326
|
Most people use a meal planner in the kitchen (cooking), at the grocery store (shopping), or in bed (planning). **Design for a phone screen first, then scale up.** |
|
327
|
|
|
328
|
- **Single-column layout** on mobile — no multi-column calendar grids that require horizontal scrolling |
|
329
|
- **Day selector** as a horizontal scrollable pill bar at the top (not a 7-column grid) |
|
330
|
|
|
331
|
- **Meal cards** are full-width, showing meal name, time, calories, and protein at a glance — tap to expand for full detail |
|
332
|
- **Bottom navigation** for section switching (Plan / Shop / Prep) |
|
333
|
|
|
334
|
- **Sticky headers** for context while scrolling |
|
335
|
|
|
336
|
### Core Layout: Dashboard + Day View |
|
337
|
|
|
338
|
1. **Dashboard (home)** — overview of the current week: |
|
339
|
|
|
340
|
- Progress card (weight goal, deficit, timeline) |
|
341
|
- Day selector (horizontal pills showing day name + total kcal) |
|
342
|
|
|
343
|
- Macro rings/charts for selected day (protein, carbs, fat vs targets) |
|
344
|
- Meal cards for selected day (compact: name, time, kcal, protein — tap to drill in) |
|
345
|
|
|
346
|
- Weekly averages card at the bottom |
|
347
|
|
|
348
|
1. **Day detail** — drill into a specific day: |
|
349
|
|
|
350
|
- Macro summary bar (4-up: kcal, P, C, F with targets) |
|
351
|
- Expanded meal cards showing all food items with portions |
|
352
|
|
|
353
|
- Per-meal macro breakdown (color-coded: protein=green, carbs=amber, fat=blue) |
|
354
|
|
|
355
|
1. **Shopping list tab** — aggregated by store section: |
|
356
|
|
|
357
|
- Checkboxes for each item (state persists during session) |
|
358
|
- Progress counter (checked/total) |
|
359
|
|
|
360
|
- Organized by store section (Proteins, Dairy, Produce, Grains/Pantry, Nuts/Oils) |
|
361
|
|
|
362
|
1. **Prep guide tab** — Sunday meal prep session: |
|
363
|
|
|
364
|
- Hero card explaining the prep concept and total time |
|
365
|
- Numbered steps with time estimates and descriptions |
|
366
|
|
|
367
|
- Organized as a cooking flow (what to do while waiting for passive cook times) |
|
368
|
|
|
369
|
### Multiple Options & Cycling |
|
370
|
|
|
371
|
- **Meal swaps** — for each meal slot, offer 2–3 alternatives the user can click to swap in. Show a small "swap" icon on each meal card that reveals alternatives in a dropdown or modal. |
|
372
|
- **Rotation plans** — if the user wants variety (e.g., "don't repeat the same dinner twice in 2 weeks"), build a 2-week rotation with different week tabs. |
|
373
|
|
|
374
|
- **High/low day cycling** — for carb cycling or calorie cycling plans, label each day (e.g., "High Day — 2,400 kcal" vs "Low Day — 1,800 kcal") and color-code the day header accordingly. |
|
375
|
|
|
376
|
### UI/UX Requirements |
|
377
|
|
|
378
|
- **Clean, appetizing design** — health-focused color palette (greens, warm neutrals), rounded cards, readable portions |
|
379
|
- **Mobile-first** — single column on mobile, expanding gracefully on desktop |
|
380
|
|
|
381
|
- **Tap to expand** — meal cards expand on tap to show full ingredient list and nutrition detail |
|
382
|
- **Bottom navigation** — persistent bottom nav bar for Plan / Shop / Prep (hidden on detail/drill-in pages) |
|
383
|
|
|
384
|
- **Sticky headers** — keep context (day name, section title) visible while scrolling |
|
385
|
|
|
386
|
### Data Architecture |
|
387
|
|
|
388
|
Embed all plan data as JSON in the app (no backend needed): |
|
389
|
|
|
390
|
```typescript |
|
391
|
|
|
392
|
interface MealPlan { |
|
393
|
|
|
394
|
weeks: Week[]; |
|
395
|
|
|
396
|
profile: { |
|
397
|
|
|
398
|
goal: string; |
|
399
|
|
|
400
|
currentWeight: number; |
|
401
|
|
|
402
|
targetWeight: number; |
|
403
|
|
|
404
|
bmr: number; |
|
405
|
|
|
406
|
tdee: number; |
|
407
|
|
|
408
|
target_kcal: number; |
|
409
|
|
|
410
|
deficit: number; |
|
411
|
|
|
412
|
macros: Macros; |
|
413
|
|
|
414
|
projectedWeeks: number; |
|
415
|
|
|
416
|
}; |
|
417
|
|
|
418
|
shoppingList: ShoppingSection[]; |
|
419
|
|
|
420
|
prepGuide: PrepStep[]; |
|
421
|
|
|
422
|
} |
|
423
|
|
|
424
|
interface Week { |
|
425
|
|
|
426
|
label: string; |
|
427
|
|
|
428
|
days: Day[]; |
|
429
|
|
|
430
|
} |
|
431
|
|
|
432
|
interface Day { |
|
433
|
|
|
434
|
name: string; |
|
435
|
|
|
436
|
label?: string; // "High Day", "Rest Day", "Meal Prep Day", etc. |
|
437
|
|
|
438
|
target_kcal: number; |
|
439
|
|
|
440
|
meals: Meal[]; |
|
441
|
|
|
442
|
} |
|
443
|
|
|
444
|
interface Meal { |
|
445
|
|
|
446
|
slot: string; // dynamic: "lunch", "snack", "dinner", "evening", "meal-1", etc. |
|
447
|
|
|
448
|
name: string; |
|
449
|
|
|
450
|
items: { food: string; portion: string }[]; |
|
451
|
|
|
452
|
macros: Macros; |
|
453
|
|
|
454
|
alternatives?: Meal[]; |
|
455
|
|
|
456
|
} |
|
457
|
|
|
458
|
interface Macros { |
|
459
|
|
|
460
|
protein: number; |
|
461
|
|
|
462
|
carbs: number; |
|
463
|
|
|
464
|
fat: number; |
|
465
|
|
|
466
|
fiber: number; |
|
467
|
|
|
468
|
kcal: number; |
|
469
|
|
|
470
|
} |
|
471
|
|
|
472
|
interface ShoppingSection { |
|
473
|
|
|
474
|
section: string; |
|
475
|
|
|
476
|
items: { item: string; qty: string }[]; |
|
477
|
|
|
478
|
} |
|
479
|
|
|
480
|
interface PrepStep { |
|
481
|
|
|
482
|
step: string; |
|
483
|
|
|
484
|
time: string; |
|
485
|
|
|
486
|
description: string; |
|
487
|
|
|
488
|
} |
|
489
|
|
|
490
|
``` |
|
491
|
|
|
492
|
## Best Practices |
|
493
|
|
|
494
|
1. **Adherence beats optimization** — a 90%-adhered B+ plan beats a 50%-adhered A+ plan. Build around foods the user already likes. |
|
495
|
1. **Protein is the anchor macro** — set it in g/kg first, then fill carbs/fat by preference. |
|
496
|
|
|
497
|
1. **Budget a 10% flex buffer** — plans that forbid all unplanned food get abandoned. If someone goes 200 kcal over one day, the plan should still work over the week. |
|
498
|
1. **Re-calculate TDEE after weight changes ~5 kg** — BMR shifts with body mass. |
|
499
|
|
|
500
|
1. **Track for 2 weeks before adjusting** — daily weight fluctuates ±1–2 kg from water/glycogen/gut contents. Use a 7-day rolling average. |
|
501
|
1. **Respect the eating window** — never schedule meals outside the user's stated eating window. If they fast until noon, the first meal is lunch, not "late breakfast." |
|
502
|
|
|
503
|
1. **Make vegetables invisible** — for users who don't love vegetables, integrate them into meals (spinach in smoothies, peppers in stir-fries, zucchini in pasta sauce) rather than serving them as plain sides. |
|
504
|
1. **Protein in every meal** — every single meal/snack should have a meaningful protein source (≥20g). No meal should be carbs + fat only. |
|
505
|
|
|
506
|
1. **Evening meals matter** — casein protein, cottage cheese, Greek yogurt, and protein puddings are ideal pre-bed options. They're slow-digesting and satisfy sweet cravings. |
|
507
|
|
|
508
|
## Limitations |
|
509
|
|
|
510
|
- Nutritional values are estimates (±10–15% even with USDA data — portion eyeballing adds more error) |
|
511
|
- TDEE formulas are population averages with ~10% individual error — real-world tracking over 2–3 weeks is the only way to find someone's true maintenance |
|
512
|
|
|
513
|
- Not a substitute for a registered dietitian, especially for medical conditions, disordered eating history, or pregnancy |
|
514
|
- Training templates are generic — modify around injuries and individual response |
|
515
|
|
|
516
|
- Hydration needs vary significantly with climate, altitude, and individual physiology |
|
517
|
- Supplement recommendations are general — individual needs vary based on bloodwork and existing diet |