2.9 KiB
2.9 KiB
Dashboard Specification
Job to Be Done
When I open the app each morning, I want to immediately see whether I should train today, so that I can make informed decisions without manual data analysis.
Components
Decision Card (decision-card.tsx)
Displays the daily training decision prominently.
Required Elements:
- Large status indicator (REST / GENTLE / LIGHT / REDUCED / TRAIN)
- Color-coded background (red for REST, yellow for GENTLE/LIGHT/REDUCED, green for TRAIN)
- Reason text explaining why this decision was made
- Icon matching the decision status
Data Source:
/api/todayendpoint returns current decision
Data Panel (data-panel.tsx)
Shows the biometric data used to make the decision.
Required Elements:
- HRV Status (Balanced/Unbalanced/Unknown)
- Body Battery Current (0-100)
- Body Battery Yesterday Low (0-100)
- Cycle Day (e.g., "Day 12")
- Current Phase (MENSTRUAL, FOLLICULAR, OVULATION, EARLY_LUTEAL, LATE_LUTEAL)
- Week Intensity Minutes (accumulated)
- Phase Limit (weekly cap based on phase)
- Remaining Minutes until limit
Visual Indicators:
- Color-code HRV status (green=Balanced, red=Unbalanced, gray=Unknown)
- Progress bar for week intensity vs phase limit
Nutrition Panel (nutrition-panel.tsx)
Displays seed cycling and macro guidance.
Required Elements:
- Current seeds to consume (Flax+Pumpkin OR Sesame+Sunflower)
- Carb range for the day (e.g., "20-100g")
- Keto guidance (OPTIONAL / No / NEVER with reason)
- Seed switch alert on day 15
Data Source:
getNutritionGuidance(cycleDay)fromsrc/lib/nutrition.ts
Override Toggles (override-toggles.tsx)
Emergency modifications to the standard decision.
Override Types:
flare- Hashimoto's flare (force REST)stress- High stress day (force REST)sleep- Poor sleep (<6 hours) (force GENTLE)pms- PMS symptoms (force GENTLE)
Behavior:
- Toggle buttons for each override
- Active overrides persist until manually cleared
- Active overrides override the algorithmic decision
- Store in
user.activeOverrides[]
Mini Calendar (mini-calendar.tsx)
Visual cycle overview for the current month.
Required Elements:
- Monthly grid view
- Today highlighted
- Phase colors for each day
- Period days marked distinctly
- Quick navigation to previous/next month
Success Criteria
- User can determine training status within 3 seconds of opening app
- All biometric data visible without scrolling on mobile
- Override toggles accessible but not accidentally activated
- Phase colors consistent across all components
Acceptance Tests
- Dashboard loads decision from
/api/today - Decision card shows correct status and color
- Data panel displays all 8 required metrics
- Nutrition panel shows correct seeds for cycle day
- Override toggles update user record immediately
- Mini calendar renders current month with phase colors