Case study 01 · Running app
Racecraft

The problem
It's 06:10 on a Tuesday and Luísa is about to go running. She is in week 7 of 12 toward her first half marathon. She needs one answer before she leaves: what is today's run, at what pace. Last week she missed a tempo run, and she'd like to know what happened to it without doing the maths herself.
Racecraft answers the postings that ask for a consumer app designed phone-first, where the data is the product. Each workout is drawn as a shape, and the plan moves a missed session by one fixed rule, then says what moved. The charts answer touch and the keyboard as well as the mouse.
See it work

Three things to try:
- 01
On Today, drag across the workout's shape, or focus it and use the arrow keys. Each bar is a block of the run: its width is time, its height is effort.
- 02
In Plan, move this Thursday's tempo, the one that came from last week, to Wednesday. Racecraft warns that it lands the day after the reps and lets you do it anyway.
- 03
In You, Demo, switch to "Watch not syncing" and try to send the workout to your watch.
How it was made
Spec
The product, the demo runner, the rule that moves a missed session, and a name checked on the web and at its address.
Brand
Three directions on the same two screens, one kept.
Prototype
Three layouts for the first screen, one picked by how fast it answers "what do I run now".
Build
The production stack with a mocked API, and the plan generator, the adjustment rule and the pace maths under unit tests.
Checks
Every state rendered at 1440 and 390 px with accessibility checks, and the first screen compared pixel by pixel with the approved prototype.
Scale
6
screens, plus a not-found page and an error page.
27
states checked, 53 renders at two widths.
3
brand directions and 3 layouts for the first screen, over 5 rounds of decisions.
16
mocked API endpoints and 5 demo scenarios; every state also opens from a link.
30
icons and 5 illustrations drawn for the product.
19
unit tests and 48 end-to-end tests.
1 h 19 min
from the ticket to the approved spec, then 1 h 18 min for the build.
What went wrong and what I changed
The first test run of the plan generator failed on one number. The goal is 1:52:00 for a half marathon, and every pace in the plan comes from the goal pace. The generator rounded 5:18.5 per km up to 5:19, so the reps, the tempo and the easy runs were all a second slower than the spec said.
The test compared the paces with the numbers written in the spec, which is why it caught the error. I changed the rounding to drop the half second, the way a running watch shows pace. The goal pace now reads 5:18 everywhere, and the other paces follow from it.
Limits and next
- The watch, the sync and the runs are mocked in the browser. There is no GPS, no account and no real watch.
- The demo runs on one fixed morning, Tuesday 3 November 2026 at 06:10, so the plan and the numbers read the same on every visit.
- Plans go up to the half marathon, and you can't edit a single workout's blocks.
- The app is in English only.