Bro Locator
Compass-style live locator for cycling crews, with contacts exchanged over sound.
Bro Locator is an Android app (Jetpack Compose) plus a FastAPI backend for group rides: a foreground service streams fused GPS samples over a WebSocket, and a full-screen compass view shows...

Bro Locator is an Android app (Jetpack Compose) plus a FastAPI backend for group rides: a foreground service streams fused GPS samples over a WebSocket, and a full-screen compass view shows each friend as a labeled arrow at the correct bearing and distance.
Friends are added phone-to-phone acoustically using the ggwave data-over-sound codec with a slotted-ALOHA collision-avoidance scheme so a whole group can swap IDs at once.
The backend keeps users, contacts, rides and positions in SQLite with in-memory pub/sub and is live behind Caddy; Play Store assets and a privacy policy are prepared.
What it does
- Foreground location service (foregroundServiceType=location) pushing GPS samples over a WebSocket ride stream with REST fallback
- Compass UI: sensor-fused azimuth, friends drawn as arrows around the screen perimeter sorted by bearing, distance labels
- Acoustic contact exchange with real ggwave plus a wall-clock slotted-ALOHA layer with adaptive transmit probability for 5-20 phones
- Ride lifecycle (start / end / members / history) persisted locally in Room and remotely
- Backend REST + WebSocket API with in-memory pub/sub, admin page, privacy policy and demo video for store listing
- One-command release pipeline (build -> private registry -> ssh compose pull) shared with the other apps
Real-time GPS streaming over WebSockets, custom compass rendering in Compose Canvas, and a novel acoustic multi-phone pairing protocol (slotted ALOHA over ggwave); signed release APK/AAB and store assets exist.
Gallery



Want something like this?
I build it live on a Zoom call, you watch the screen, the timer stops when you say stop. First 15 minutes are free.