The problem
Serious athletes don’t want a summary number, they want to read their data: heart rate against elevation against breathing rate at minute 02:23 of last Tuesday’s run; muscle mass by week across six months.
The brief was one line, “build the analytics,” for a young team with no roadmap or sprint cadence yet. The pipe in: Garmin and other wearables, sleep, RHR, HRV, body composition, GPS-traced runs. The surface to build: dashboard, body-composition statistics, the activity detail (route map, summary, multi-axis charts), and the calendar that ties planned training to recorded sessions.
The call
Layered depth over a dumbed-down summary: one number at a glance, three numbers with effort, the full multi-axis correlation on click. And one design vocabulary across all four surfaces, so a click down reads as a depth change, not a navigation change. The open mandate was scoped into a roadmap and sprint cadence rather than an open-ended build.
Four surfaces, one drill-down
The athlete moves through four surfaces depending on what they're asking. Dashboard for the daily check-in, Health Index, three vital signs, an AI-generated read on the trend. Statistik for the long view, a single body metric (muscle mass, body water, RHR) plotted by week with min / max / average framing. Aktivität for a single session, route map, summary card, the option to tag, review and break down. Charts for the post-mortem, heart rate against elevation against breathing rate, primary and secondary Y-axes configurable, combined mode on by default. The same components, spacing and metric definitions follow the user down through every level.
- Daily check-inDashboardHealth Index, three vitals, an AI read.
- Long viewStatistikOne body metric, grouped by week.
- Single sessionAktivitätRoute map, summary, review and tag.
-
Post-mortemChartsHeart rate against elevation against breathing, axes configurable.
Outcome
The analytics surface shipped, and the team now runs on the roadmap, backlog and release rhythm the mandate introduced.