Skip to content
Hamza Ahmad
Menu

Race results and analysis app

Shipped

MyRace

Turns a runner's finish time into a full race breakdown, with Garmin Connect sync for training runs.

MyRace turns a finish time into the whole story of a race: rankings overall, by gender and by age group, half splits, age grade, and pace and elevation for every segment of the course.

I built it in Flutter for iOS and Android, porting the web experience to mobile, with a Garmin Connect integration that syncs training runs straight from the watch.

What I built

  • Race rankings, splits, age grade and per-segment pace and elevation
  • Garmin Connect integration (OAuth 1.0a, Health API) for training runs
  • Firebase for auth, data and push notifications
  • MongoDB Stitch serverless functions for race data

Stack

  • Flutter
  • Dart
  • Redux
  • Firebase
  • MongoDB
  • Garmin Connect
  • MapBox

Screens

MyRace: race results and performance analysis
MyRace: race results and performance analysis
Race stats and rankings
Race stats and rankings
Pace and elevation by course segment
Pace and elevation by course segment
Training runs synced from Garmin
Training runs synced from Garmin
Runner profile and race history
Runner profile and race history
How MyRace is built
How MyRace is built