RETURN TO HOME

Building @ Run Club

I started a run club at work, then designed and built an app for it on my own. There was no brief. Runners earn points for effort rather than speed, so a slow beginner can earn as much as a fast regular.

I did the idea, product, UI and build, using Claude Code. It went live in March 2026, and I've kept reshaping it around how the club actually uses it. Every screen here shows demo data.

The gap

The club had a mix of runners, ex-runners and people who wanted to start. Its activity lived in a work chat full of Strava screenshots, which left out anyone without Strava, and anyone who didn't want work apps on their personal phone.

Nobody asked for an app. What was missing was a shared space anyone could reach from their own phone. I set a deliberately low bar for success: people going for a run, however rarely.

How do you bring people together through running without leaving anyone out, when they all live far apart?

Effort, not speed

Living far apart ruled out group runs, so the club had to work asynchronously. Rewarding distance or pace would favour people who were already fit. So I stopped rewarding how good a runner you are, and started rewarding how hard you tried compared with yourself.

When you join, you enter a recent run you finished comfortably. That's your baseline, and every run after it is scored against it:

  • At your normal pace, 1 km earns 1 point, however fast or slow that pace is
  • Beating your own pace earns up to 1.5× per km
  • A slow day still earns at least 0.7× per km, so turning up always counts
  • Longer runs are judged against a slightly slower baseline, so going further isn't penalised

Two runners each do 5 km at their usual pace, one in 22:30 and one in 37:30. Both earn 5 points. On a day the newer runner pushes, they outscore the faster one.

Settings screen showing a baseline run of 5 km in 26:00 and the calculated paceLog a run sheet with date, distance, duration and description, previewing the points the run will earn

I chose not to police it. No proof photos and no anti-cheat checks, because both add friction and suspicion to something meant to feel friendly. The only guardrails sit inside the formula: a cap and a floor. If you keep running well ahead of your baseline, the app suggests updating it. It nudges rather than enforces.

From my stats to the club

Over six months, most design changes moved attention away from personal rank and towards shared progress.

  • The homepage changed from a personal dashboard to a feed of everyone's runs
  • Streaks count weeks, not days, so one run a week keeps one alive
  • Weekly rank was swapped for a streak strip, so consistency comes before position
  • Weekly and monthly leaderboards sit next to all-time, so everyone gets a fresh start
  • Every run moves one shared club distance goal
  • Reactions on runs, including a jokey "Poor effort", moved the banter into the app
Club feed with a weekly points summary, a week streak strip and other members' runs with reactionsFeed card celebrating the club passing a shared distance goal, with reactions from membersLeaderboard with all-time, monthly and weekly tabs, the club's total distance and members ranked by pointsRewards screen showing progress towards the next club merch item and the items already unlocked

Native design, web build

I designed it as a native mobile app, then shipped it as a mobile-first web app. A link works on any personal phone, with no app store, no install and no work account. For a small club, reach mattered more than native polish. The native feel came across anyway, through bottom sheets, a floating log-run button and a bottom nav.

Building with Claude Code

Claude Code turned a designer's prototype into a real product, with sign-in, a database and server-side scoring. The first version went live on day one. Later, a whole restructure of the homepage, profile and settings took a single day.

The catch was that cheap building made it easy to over-build. A seasonal team game, suggested by members, grew proof photos, admin review and team scoring before anyone had played a rough version. I parked it. Next time I'd test the idea on paper first.

Outcome

The app cleared its low bar. People went from running occasionally to running regularly. The leaderboard brought some light-hearted competition, runners encouraged each other constantly, and members started suggesting ideas for the club and the app.

What I'd change

Effort points even out speed, but not volume. Someone running 60 km a week still out-earns a beginner doing 5 km, and that's the gap I set out to close. The weekly streak bonus was a first step, and rewarding frequency would go further.

I'd also stop getting fitter from feeling like a penalty. Updating your baseline as you speed up lowers the points you earn per km, so honest improvement costs you.