Building an intelligent running app
Graham Dubow
•2026-04-07
PaceApp is a React Native app built on Expo SDK 52 with TypeScript. The UI layer uses NativeWind v4 for styling, Zustand for state management, and Supabase for the backend. The interesting parts live in the service layer: a playlist engine that matches music to your cadence, a readiness scoring system fed by Apple Health data, and an adaptive playback engine that responds to your effort in real time.
For tracks that no PaceApp user has ever looked up, we query [GetSongBPM](https://getsongbpm.com)'s API. Their database covers millions of songs with accurate tempo data, and the search endpoint accepts a simple title + artist query. Results are cached back to both Supabase (shared) and local storage (device), so each external API call only ever happens once per song across the entire user base.
Thanks to the GetSongBPM - we added another data layer onto our already really good algorithm.

