← Connor Linehan
Case Study
XC Map
Yelp, but only for cross-country courses and running tracks — a map-first app for runners, built by a runner who lived the problem.
Swift · MapKitFirebaseBeta on TestFlight
01 — The Problem
24,000 courses, no map that knows about them.
Runners find courses and tracks by word of mouth. XC Map catalogs roughly 24,000 U.S. cross-country courses and tracks with reviews, ratings, and a personal race log, so discovering a new place to run doesn't depend on already knowing someone who runs there.
02 — The Build
Making 24,000 map pins fast.
- Client: SwiftUI with MapKit.
- Backend: Firebase.
- Performance: venues load through geohash-tiled viewport queries with clustering, so the map stays responsive at 24,000+ pins.
- Moderation: a user-submitted course pipeline — submissions plot on the map and go through an in-app admin approval queue.
Why it matteredMap performance was the whole product risk — a slow or laggy map on a running app people check mid-run isn't usable, so the geohash-tiled query design came before any of the review/rating features.