Data Model

What the organized data looks like.

All of this is stored in one JSON file. The dashboard includes a copy of the data — no server, no database needed.

01 · Volume
All workouts
Headline Stats
Total workouts, total hours, active days, consecutive active weeks, miles, calories
2,964 workouts · 2,630 hrs · 384 weeks
Monthly Volume
Workouts, hours, miles, calories per month, split by Cycling / Strength / Other
Mar 2018: 15 workouts, 11.6 hrs
Heatmap
One entry per active day with workout count and effort tier (1–5)
2018-03-28: 2 workouts, tier 3
Instructors
Workout count per instructor across all disciplines
Matt Wilpers: 3,206
02 · Performance
Power Zone + FTP only
Performance Series
Grouped by ride type + duration. Each group has scatter points, monthly median, and 90-day rolling median.
PZ Endurance 60 min: 140 rides
Annual Summary
Year-level stats per ride type + duration: average, 75th percentile, 90th percentile, max watts
2021 PZ Std 60 min: avg 269W, max 292W
FTP Tests
Each all-out 20-min assessment as a date + watts data point (13 tests over 8 years)
2020-12-05: 363W
Events
Hand-authored markers for context (COVID, equipment changes) shown on charts
2022-03-01: New bike (calibration)
dashboard_data.json incorporated into dashboard.html — no server needed