Run one-time historical data import script — was marked complete but wasn't: confirmed 2026-07-12 via direct SQL that BOTH exercises and sessions are completely empty (0 rows each). The 2025 extraction/JSON prep may have happened, but none of it ever actually loaded into Supabase. Every card reading from these two tables (Key Lifts, Strength Arc, 1RM Tracker list, Muscle Group Frequency, Total Steps/Burn/Intensity, Week at a Glance) is correctly showing zero/empty states — that's the live wiring working as designed against a genuinely empty backing table, not a new bug. Real content only appears once this import actually runs, or once enough is logged from re-entry forward
✓
Wire Daily Brief · Today's Session + Weight Zone (live)
✓
Wire Daily Brief · Avg Burn This Week (missed in original 5-card scoping, caught in review — real data via sessions table, same source as Command Center's week burn stat)
✓
Wire Daily Brief · Avg Steps This Week (real data via wearable_daily, once CSV ingestion existed — renamed from "Steps Today" since wearable data always lands a day lagged, never same-day)
✓
Wire Daily Brief · Calories In Today (unblocked once meal_log existed — real kcal/protein/carbs/fat summed from today's logged meals, was a static 2,150/182g/155g/62g placeholder)
Wire Command Center · Total Steps (weekly sum, matches Total Burn's sum-style stat — distinct from Daily Brief's weekly average)
✓
Wire Command Center · Vitals This Week (avg heart rate, resting HR, HRV, avg active energy — sourced from wearable_daily, previously imported but never surfaced anywhere)
✓
Wire Nutrition tab weekly summary (kcal/protein/carbs/fat) to weekly_log; removed fabricated daily bar chart (no daily-granularity source exists)
Wire weekly summary and monthly trends — Weight Arc (weekly_log.bodyweight_kg, last 4 entries), Key Lifts (live 2026 e1RM for 4 programmed lifts), Muscle Group Frequency (this week vs 8-week avg, classified off exercises.muscle_groups), and Strength Arc (real per-exercise 1RM trend bars) all rewired off real data — were all still static hardcoded HTML despite Muscle Group Frequency appearing live in an earlier review. Next Cycle Recommendation intentionally left as an honest "not built yet" placeholder — trend-flagging logic deferred to post-Netlify by direct instruction
✓
Wire session log saves to Supabase on end session
✓
Wire meal plan saves + recipe library writes to Supabase
✓
Wire weekly check-in saves (weight, sleep)
✓
Split sleep off weekly_log into dated sleep_log table (was overwriting within the week, no per-night record) — run create_sleep_log.sql before deploying
✓
Week at a Glance wired live: real dates, per-day states (completed/today/note/blank), editable detail modal
✓
Manual-vs-wearable data separated: source column on sessions, calorie stats scoped correctly
✓
Retroactive/backdated session logging built
✓
Build daily nutrition logging — new meal_log table, Y/N + deviation form now actually persists to Supabase (was UI-only button state before); Nutrition · Weekly Averages (kcal in, net, protein) rewired off meal_log since weekly_log's nutrition fields have no write path and are always null
✓
Build wearable CSV upload (Apple Watch via Health Auto Export app, daily 5AM automation → iCloud "Spark HQ Imports" folder → symlinked into ~/spark-hq → manual upload through dashboard Log tab)
Deploy to live URL (Netlify or Vercel, free tier)
✓
Wire spinal constraint flags to exercise library — spinal_risk_tier populated in Supabase (46 hard, 11 caution, run via update_spinal_risk_tier.sql); flags now also surfaced directly on the exercise-log-card itself, not just inside the Swap panel
✓
Build 1RM tracker: live est. 1RM (Epley) on the exercise log card as weight/reps change, new "1RM Tracker" tab grouped by body region → muscle group → exercise, trend popup showing last 10 logged instances
7
Step 7 · Stress-test + brand final + sign-offupcoming
Simulate travel week: hotel gym mode tested
Simulate low-sleep day: logging still under 60s
Simulate high-workload week: gap handled gracefully
Build wearable Shortcuts → direct Supabase REST API POST (true zero-touch automation, skips the manual CSV upload tap entirely — deferred by choice, Captain Spark wants the manual route proven first)
Sign-off: Fitness Desk is live
Open questions · pending resolution
Spark HQ top-level naming: HQ confirmed, domain-level term still open (Desk leading)
Health data sync: Option A (manual CSV, Health Auto Export daily 5AM automation) active now. Option B (direct Shortcuts→Supabase automation) deferred to Step 7, by choice.
Wellbeing Desk: separate domain, not a Fitness subfeature. Therapist read-only view is a Wellbeing Desk architecture decision. Long-term build.
Spark trademark: check UAE + US registers before public use. Word alone not protectable -- brand system is the moat.
Freestyle logging: Option C container + Option B inside confirmed
Violet removed from system: replaced with forest-mid
Protein shakes excluded from meal templates
Typography: Space Grotesk 600-700 headlines, Geist 400-500 body/UI
Wearable decision: staying on Apple Watch, not switching to Garmin/Whoop — decided 2026-07-11
Session Ratings · This Week
—
/ 5 avg
no data
Mon
Tue
Wed
Thu
Fri
Sat
Sun
⚡
Performance
—
★
Quality
—
🔥
Intensity
—
Avg Burn · This Week
—kcal
not logged yet
0% of weekly target
Weight Zone
—kg
8588—9193
Avg Steps · This Week
—
not logged yet
Calories In Today
—
—
protein
—
carbs
—
fat
Today's Session
Loading…
This Week at a Glance
📅Sessions
—
🔥Total burn
—
⚡Avg intensity
—
👟Total steps
not logged
Vitals · This Week
❤️Avg heart rate
not logged
💤Resting HR
not logged
📈HRV
not logged
⚡Avg active energy
not logged
Weight Arc · 4 Weeks
Loading…
Key Lifts · Est. 1RM
Loading…
Nutrition · Weekly Averages
🍴Avg kcal in
2,180
⚖️Net avg
1,568
🥩Protein avg
185g
🍽️Most eaten meal · YTD
Not tracked (yet)
Muscle Group Frequency · This Week
Loading…
Strength Arc · Last 8 Weeks
Loading…
Next Cycle · Recommendation
Recommendation engine not built yet — trend-flagging logic is planned for after the Netlify deploy.
Monthly history
Flags
2 sessions logged · 3 more needed this week
Weight Zone: green · no action needed
Weekly burn at 51% of target · 3 sessions remaining
Weekly Nutrition Summary
Avg kcal in
—
target 2,200
Avg protein
—
target 175g+
Avg carbs
—
Avg fat
—
Daily Intake This Week
Not tracked at daily granularity yet — only the weekly average above is logged, via Saturday check-in.
Meal Templates · Active Rotation
Not assigned this week
—
—
—
—
Not assigned this week
—
—
—
—
Not assigned this week
—
—
—
—
Not assigned this week
—
—
—
—
Set this week's rotation
Add a new recipe
Correlations · Early Signals
Patterns will surface after 6–8 weeks of logged data. Current state:
Avg protein this week182g · on target
Low calorie days vs session qualityinsufficient data
Heavy week nutrition readinessinsufficient data
Heavy week meal plan recommendation will activate once 6 weeks of data exists. Current phase: light — standard rotation is sufficient.
← Back to dashboard
Check-in
loading…
loading…
Import Wearable Data
Weekly CSV export from the Shortcut — steps, calories, heart rate, HRV. One row per day; re-uploading a date overwrites it, so overlapping weeks are safe.