Stride: A Personalized Marathon Training Planner
Beta
Shipped with active runners
0+
Workouts mapped per training plan
Live
Google Calendar two-way sync
The Problem
Most marathon training plans are static PDFs or spreadsheet templates. They assume everyone starts at the same fitness level, runs the same days, and has the same schedule. If you miss a week or your long-run day conflicts with a standing obligation, the plan doesn't adapt — you just fall behind and guess.
Runners who are serious about finishing (or hitting a goal time) need a plan that reflects their actual starting point, fits their real calendar, and provides the right fueling and pacing guidance for every workout — not just a list of miles.
What I Built
Stride is a web app that generates a full periodized training plan from a short onboarding questionnaire. Users enter their race, race date, fitness level, longest recent run, weekly mileage, available training days, and goal time. Stride builds an 18-week plan across four phases — Base, Build, Peak, and Taper — and maps every workout onto an interactive calendar.
The plan engine
The core of Stride is a pure, unit-tested plan engine that handles periodization, pacing, and safety constraints.
Periodized phases that work backward from race day. The plan starts from race date and allocates weeks across Base (aerobic foundation), Build (threshold and speed work), Peak (race-specific long runs), and Taper (volume reduction). Every phase has a distinct purpose, and the transition points are calculated to peak at the right time.
Safety guardrails built into the algorithm. Weekly volume never exceeds roughly 110% of the prior week's highest. Step-back recovery weeks are inserted every fourth week. Long runs peak at 20–22 miles three weeks before race day, then taper. For beginners, there's an 8-mile minimum long-run floor with a medical disclaimer. These aren't suggestions — they're hard constraints in the engine.
Pace targets derived from goal time. If the user provides a goal marathon time or a recent race result, Stride uses the Riegel formula to derive training paces for every workout type: easy, tempo, interval, and marathon pace. Each workout card shows the exact pace range to target.
Eight workout types. Long runs, easy runs, tempo runs, intervals, marathon-pace runs, cross-training (cycling, swimming, rowing), strength sessions (runner-focused core and single-leg work), and rest days. Each type is color-coded on the calendar.
Google Calendar sync
Stride writes all planned workouts to the user's Google Calendar and reads existing events to flag conflicts. If a tempo run lands on a day the user already has a two-hour meeting block, Stride suggests moving it to a free day that week. The sync is two-way — regenerating a plan updates the calendar automatically.
Fueling and hydration guidance
Every workout includes per-run fueling guidance: target carbs per hour, fluid intake, electrolyte timing, and post-run recovery windows (carbs plus protein in a 3:1 ratio within 30–60 minutes). Long runs and race day get specific gel timing and carb-loading protocols. The guidance adapts to workout intensity and distance — a 6-mile easy run doesn't get the same fueling advice as a 20-mile marathon-pace effort.
Strava integration (coming soon)
Strava sync will import completed runs automatically, matching them to planned workouts and updating progress tracking without manual logging. The integration is in development on a feature branch.
Run logging and progress tracking
Users can log completed workouts with distance, duration, and how they felt. The dashboard shows a live countdown to race day, plan completion percentage, weekly mileage stats, and a running streak. Logged runs persist across plan regenerations.
Built for mobile, architected for native
Stride is a responsive web app that works cleanly in mobile browsers — the primary use case is checking today's workout on your phone before heading out. The architecture supports wrapping in a native shell later without rewriting the core app.
The Outcome
Stride is live in beta with a small group of runners training for fall marathons. The plan engine generates over 135 workouts per cycle, each with pacing and fueling guidance. Google Calendar sync is fully functional, and the onboarding-to-first-plan flow takes under two minutes.
What I Learned
Building a training plan engine taught me how much domain modeling matters in product development. The difference between a good and dangerous plan comes down to constraints — volume caps, taper timing, recovery week placement — and those constraints had to be encoded as hard rules in the algorithm, not left as suggestions in the UI. Getting the safety model right required reading exercise science research and testing edge cases (what happens when a beginner selects 6 training days? what if race day is only 8 weeks away?).
I also learned that calendar integration is a surprisingly strong engagement lever. Once workouts live in Google Calendar alongside real commitments, the plan stops feeling like a separate thing to remember and starts feeling like part of the user's day.