Inspiration
My father is a public transit bus driver in Barcelona. Every day, I watch him struggle with outdated cabin hardware, confusing route variations, and the high-stress environment of keeping a multi-ton vehicle on schedule. While passengers have dozens of sleek transit mapping apps, drivers are left in the dark, relying on paper sheets or clunky legacy systems to know their exact schedule deviations and route alerts
I built AlVolant because transit software should serve the worker first. This is a dedicated, landscape-oriented cockpit app built specifically for the dashboard mounts of Barcelona's bus fleet, aimed at reducing driver cognitive load and providing sub-meter spatial coaching
What it does
A driver can select a scheduled departure or enter a vehicle manually, then follow the assigned route on a map.
- Keeps the route ahead while the camera follows the vehicle.
- Shows the current stop, the next stop, distance to the next stop, speed and an estimated arrival time.
- Displays a live traffic status from TomTom when data is available: fluid, dense, slow, jammed or closed.
- Shows route-scoped service alerts from GTFS-Realtime.
- Includes a fleet radar. For supported TMB services, AlVolant reads iBus stop predictions across the direction of travel and estimates which buses are ahead and behind. These positions are an inference from stop predictions, not invented GPS data.
- Includes a route simulation mode so the interface and the live-data integrations can be tested without driving a real service.
- Supports portrait and landscape layouts, plus an iOS Live Activity for an active route.
How I built it
The mobile app is built with React Native, Expo and MapLibre Native. The backend is a FastAPI Backend-for-Frontend with Redis.
The BFF combines:
- static GTFS route and stop data.
- ATM GTFS-Realtime trip updates, vehicle positions and service alerts.
- TMB iBus predictions for the fleet radar.
- TomTom Traffic Flow data.
- bounded caching and rate limits, so one traffic or tile lookup can be reused instead of every device hitting a provider independently. Provider credentials stay on the server. When a source has no usable live data, the app falls back cleanly instead of showing made-up information.
Challenges I ran into
- Public transport feeds are incomplete or inconsistent at times. The backend validates and bounds real-time data so a malformed response does not break the rest of the route.
- A traffic or satellite tile provider can rate-limit a busy app. I added shared server-side caching, quotas and a fallback path instead of retrying aggressively.
- TMB iBus exposes stop predictions, not a perfect public GPS feed for every vehicle. The fleet radar scans the direction of travel, deduplicates predictions and excludes the driver’s own bus when it can identify it.
- Keeping a navigation view useful in both portrait and landscape required treating the HUD as a product feature, not just a resized screen.
Built with Codex and GPT-5.6
To be honest: I am absolutely terrible at frontend design so Codex was a lifesaver.
To build AlVolant during this Hackathon, I utilized a split-AI workflow. GPT-5.6 Sol was used exclusively to prototype and skin the UI, helping me translate raw layout drawings into functional React Native StyleSheet configurations. Codex handled the complex backend calculations, map projection state-machines, and unit testing. This allowed me to focus heavily on system architecture, Docker orchestration, and mathematical modeling instead of wasting hours debugging flexbox alignments
What's next for AlVolant
- App Store Launch & Subscription Model: I plan to launch AlVolant on the App Store this September. As a student, paying the $99/year developer fee out of pocket is tough, so I will offer the app for a tiny subscription of $0.99/month. With just 10 active drivers subscribed, the annual fee is fully covered
- Local Server Hosting: While I plan to eventually migrate the production Docker containers to a dedicated cloud VPS, I must keep running my FastAPI BFF and Redis cache locally on my Mac Mini server for now to keep infrastructure costs at absolute zero.
Built With
- codex
- expo.io
- fastapi
- gpt-5.6
- gtfs
- gtfs-rt
- ibus
- python
- react-native
- redis
- typescript
- websockets
Log in or sign up for Devpost to join the conversation.