← Back to WorkMobile App

TrackHub

A live mobile app for following college track & field. TrackHub brings together results, rankings, athlete profiles, and meet information in one place for athletes, coaches, and fans who actually follow the sport.

RoleSolo Developer & Designer
StackReact Native, Expo, Supabase
Timeline2025–2026
2.8M+
Results Indexed
123K+
Athlete Profiles
12K+
Meets Tracked
300+
Active Users

Overview

Why I Built It

College track & field data lives across TFRRS, USTFCCCA, Athletic.net, and MileSplit, but following the sport still feels fragmented. People bounce between different sites just to check results, compare athletes, or keep up with meets, and none of it feels built for mobile.

What TrackHub Does

TrackHub pulls that experience into one app. Users can check weekly leaderboards ranked by World Athletics scoring, follow athlete profiles over time, compare athletes head to head, and keep up with meet results without stitching the sport together themselves.

Features

Live Leaderboards

Weekly top performances ranked by World Athletics 2025 scoring. Compare a sprinter's 100m to a distance runner's 5000m fairly.

Athlete Profiles

Complete performance history, personal records by event, and season progression tracking for 123,000+ athletes.

Head-to-Head

Compare any two athletes with visual charts across their shared events and competition history.

Meet Tracker

Live, upcoming, and past meets in one view. Multi-day meet support with direct links to live timing.

System Architecture

Sources
TFRRS
Results
USTFCCCA
Schedules
Scraping
Node.js
Puppeteer + Cheerio
Processing
Normalize
100+ event variations
Database
Supabase
PostgreSQL + WA Scoring
Frontend
React Native
Expo • iOS & Android
Automated via GitHub Actions • Mon/Thu/Fri scrapes • Sun/Mon syncs

Technical Challenges

1Cross-Event Athlete Comparison
ProblemHow do you fairly compare a 100m sprinter to a 5000m distance runner?
SolutionImplemented the official World Athletics 2025 scoring system using quadratic equations (points = a×x² + b×x + c) with event-specific coefficients for 100+ events. Indoor vs outdoor detection based on 60m event presence.
ResultFair 0-1600 point scoring across all track & field events
2Dynamic Source Collection
ProblemMeet schedules were spread across source pages that loaded content dynamically and changed structure over time, making simple HTTP collection unreliable.
SolutionBuilt a browser-based collection pipeline with paced requests, validation checks, and fallback matching so meet discovery stayed consistent.
Result100% success rate on meet discovery
3Performance at Scale
ProblemCalculating WA scores for thousands of performances was slow with individual queries (2-3 second load times).
SolutionCreated PostgreSQL functions that handle scoring, deduplication, and filtering in a single database call. Added multi-layer caching with AsyncStorage (5-min TTL) and in-memory cache.
Result45 → 1 API calls, load time reduced to 50-100ms
4Meet Matching Across Platforms
ProblemSame meet has different names: "NCAA Division I Indoor" vs "NCAA Division I Indoor Track & Field Championships"
SolutionBuilt a fuzzy matching algorithm with manual mappings for known variations. Adjacent date searching for multi-day meets.
ResultMatch rate improved from 6% to 57%

Results

Query Optimization
45 → 1
Load Time
50-100ms
Match Rate
6% → 57%