Modern, native iOS and Android apps and a web app for exploring historical Formula 1 data: drivers, teams, circuits, standings, full session results, telemetry and a lap-by-lap race replay, powered by the FastF1 library (2018–present).
Documentation · Website · Discussions · Report a bug
| Piece | Tech | Folder |
|---|---|---|
| iOS app | Swift · SwiftUI (iOS 17+) | RaceControlApp/ |
| Android app | Kotlin · Jetpack Compose (Android 8+) | RaceControlAndroid/ |
| Web app | TypeScript · Next.js | RaceControlWeb/ |
| Data backend | Python · FastAPI · FastF1 | backend/ |
| Project site | TypeScript · Next.js | RaceControlSite/ |
| Documentation | VitePress | RaceControlDocs/ |
Same backend, same data, same features. The iOS, Android and web apps are independent clients, each following its own platform's conventions rather than one being a port of another.
Start the backend first. Every client needs it. Requires Python 3.10+.
git clone https://github.com/Race-Control-HQ/Race-Control.git
cd Race-Control/backend
./run.sh # creates a venv, installs deps, starts the API on :8000Open http://localhost:8000/docs for the interactive API docs. A local backend needs no configuration and no auth.
Then run whichever client you want:
| Client | Requirements | Run it |
|---|---|---|
| iOS | Xcode 16+ | Open RaceControlApp/RaceControl.xcodeproj, pick a simulator, press ⌘R |
| Android | Android Studio with AGP 9.4 support, JDK 17 | cd RaceControlAndroid && ./gradlew assembleDebug, or open the folder in Android Studio |
| Web | Node 20+ | cd RaceControlWeb && cp .env.example .env.local && npm install && npm run dev |
Full instructions for each piece, including physical devices and pointing the apps at your own backend, are in Getting Started.
Everything in depth lives at docs.getracecontrol.com:
| Getting Started | Run the backend and each client locally |
| Features | What the apps do, and where the platforms deliberately differ |
| API Reference | Every backend endpoint |
| Architecture | How one backend feeds three clients |
| Self-Hosting | Deploy your own copy, with environment variables and device attestation |
| Contributing | Development setup, CI, pull requests |
| Help | Troubleshooting and common questions |
The docs are built from RaceControlDocs/. Every page has an
"Edit this page on GitHub" link.
- 💬 Questions and ideas: GitHub Discussions
- 🐛 Bugs and feature requests: open an issue using the matching form
- 🔒 Security issues: report privately, as described in SECURITY.md. Please do not open a public issue.
- 🤝 Code of conduct: everyone taking part is expected to follow the Code of Conduct
Issues and pull requests are welcome, and most changes touch only one piece of the repo. The contributing guide covers setup, the checks CI runs and what a good pull request looks like. For anything larger, open an issue to talk through the approach first.
Data is sourced live by FastF1 from the F1 live-timing API and the Ergast/Jolpica database. This is an unofficial project and is not associated with Formula 1 companies. F1, FORMULA 1 and related marks are trademarks of Formula One Licensing BV.
Released under the MIT License.