About this project — I'm not a developer. I'm a competitive shooter who got frustrated with the state of match management tools and decided to build something. Most of this code was vibecoded with Claude and a lot of trial and error. It's running as a beta at makereadyapp.com, but it is not production-ready software — there are rough edges everywhere and plenty I don't know enough to do well.
I'm open-sourcing it so that actual developers, coders, and software engineers in the shooting community can take it somewhere better. Fork it, rewrite it, tear it apart — do whatever makes it useful. GPLv3; it belongs to the community now.
Open-source competitive shooting match platform. The mobile app is the match-day operations side: squad management, scoring, and walk-up registration. Built for tablets (primary target: Amazon Fire 10).
Companion web app (match discovery, registration, published results): MakeReady.Web.
Hosted beta + APK download: makereadyapp.com/download
Two roles on the same APK. Every tablet starts as a Scoring Pad; the Master Pad role unlocks when a Match Director signs in.
- Master Pad (Match Director) — downloads the match, manages squads, hosts the sync server on a local WiFi hotspot, uploads final results to the cloud.
- Scoring Pad (Range Officer) — joins the master's hotspot, scores shooters on assigned stages, syncs scores back to master over HTTP.
Everything works offline. The master pad is the local source of truth for match-day data; scoring pads sync to it; master uploads to Supabase when the match ends.
- IDPA — time-plus scoring, 5x5 classifier with auto-classification
- USPSA — hit factor scoring
- Steel Challenge — best-N-of-strings scoring, peak-time classification
- PCSL — in progress
- React Native 0.83 + Expo 55 (managed workflow)
- TypeScript + NativeWind (Tailwind for RN)
- expo-router for navigation
- expo-sqlite for local match storage
- react-native-http-bridge-refurbished for the pad-to-pad sync server
- Supabase JS SDK for cloud download/upload
# 1. Clone and install
git clone git@github.com:MakeReadyApp/MakeReady.Mobile.git
cd MakeReady.Mobile
npm install
# 2. Configure environment (points at your Supabase project)
cp .env.local.example .env.local
# edit .env.local with your Supabase project URL + anon key
# 3. Run in Expo Go (dev)
npx expo start
# scan QR code with Expo Go on your tabletThe HTTP sync bridge requires a dev-client or release build, not Expo Go. See android/ after running expo prebuild --clean.
Minimum tooling:
- JDK 17
- Android SDK with command-line tools
android.enableJetifier=truemust be set inandroid/gradle.properties(the HTTP bridge library needs it)
npx expo prebuild --clean
# re-add android.enableJetifier=true to android/gradle.properties
cd android && ./gradlew assembleRelease
# APK: android/app/build/outputs/apk/release/app-release.apkIssues and PRs welcome. Please open an issue first for anything larger than a small fix so we can align on approach.
GPLv3. Contributions are accepted under the same license.