← Work
MCP ServersHackathonDashboard

Fitness Training Dashboard

Combining disparate training sources into one dashboard for faster workout analysis, with the plan and the actuals side by side.

0
Live APIs connected
0 tools
Custom Strava MCP server
<0 days
from concept → launch

Context

While training for races in the past and currently prepping for a half marathon, my plan and my actual data lived in separate places that never talked to each other: a 4-month Google Sheet training plan with weekly agendas, an email digest from my coaches with adjustments to that plan, and the health and fitness data my Garmin watch records and syncs to Strava. I wanted a single place to see how my body was actually progressing, and how to adjust what's coming.

Challenge

Connect three live data sources into one dashboard that shows the week's plan next to actual Strava workouts, layer an AI coach on top to read historical data against upcoming plans, and build it in two days to move quick.

Execution

  • Built a custom Strava MCP server (5 tools) so Claude can pull real workout data in real time instead of guessing.

  • AI workout analysis via the Anthropic Claude API, prompted to give a quick read before you are even home from the sweat session.

  • Parse a 16+ week Google Sheet (every mesocycle, weekly workout, and long run) into a week-keyed map you can page through, forward to any planned week or back across the season.

  • Each week's mileage goal comes straight from the coach's "percent of peak" in the sheet, scaled to my peak, so an 80% week reads as a 20-mile target. That one number kept every week personal and focused on exactly what I needed right then, instead of getting lost in the sauce or staring too far down the season.

  • Hardened three live integrations against real-world failure modes: credential formatting, server-side URL resolution, and API rate limits.

Work

It started with one brief and a race on the calendar
Three sources that never talked to each other, wired into one Next.js dashboard: Garmin and Strava for the actual workouts, a season-long Google Sheet for the plan, and weekly coach emails for the adjustments.
Three sources that never talked to each other, wired into one Next.js dashboard: Garmin and Strava for the actual workouts, a season-long Google Sheet for the plan, and weekly coach emails for the adjustments.
Six milestones, kickoff to live in under two days: the Strava MCP server, plan vs actual, AI workout analysis, history backfill, week navigation, and the season view.
Six milestones, kickoff to live in under two days: the Strava MCP server, plan vs actual, AI workout analysis, history backfill, week navigation, and the season view.
The payoff view: the week's % of peak target, the coach's reps, my own daily plan, and the actual Strava workout, all in one row.
The payoff view: the week's % of peak target, the coach's reps, my own daily plan, and the actual Strava workout, all in one row.
The week at a glance, plus the 12-week mileage trend and a countdown to race day.
The week at a glance, plus the 12-week mileage trend and a countdown to race day.
Every tracked week, rendered from the same clean source as the live dashboard.
Every tracked week, rendered from the same clean source as the live dashboard.