🚌 HanoBus — Know Before You Go
HanoBus is a real-time public bus tracking mobile application built for Rwandan commuters. It gives passengers live GPS locations of buses, estimated arrival times, and intelligent route planning — directly from their smartphone.
💡 Inspiration
As students commuting daily in Kigali, we faced the same problem every single day — standing at a bus stop with zero information. No screens, no schedules, no tracking. You wait and hope.
We calculated that the average Kigali commuter wastes between 30–60 minutes per day just waiting with no information. Multiply that by 1.3 million daily commuters and the scale of the problem becomes undeniable.
We didn't wait for someone else to solve it. We built HanoBus.
🏗️ How We Built It
HanoBus is a cross-platform mobile application built with React Native, targeting both Android and iOS from a single codebase — critical for Rwanda where both platforms have significant user bases.
Real-time data pipeline:
- GPS coordinates are collected from buses every 10 seconds
- Firebase Cloud Functions receive, validate, and process the data
- Firestore updates the bus document in real-time
- The mobile app listener detects changes instantly
- The map marker moves on the user's screen
- Arrival time is recalculated based on the new position
Backend: Firebase (Firestore, Cloud Functions, Auth, FCM)
Frontend: React Native with Google Maps API integration
Languages: JavaScript / TypeScript
Collaboration: Slack, Trello, in-person planning sessions
⚙️ Core Features
- 🗺️ Live Bus Tracking — real-time GPS positions of active buses
- ⏱️ Arrival Estimates — predicted time until the next bus reaches your stop
- 🧭 Route Planning — fastest route from your location to your destination
- 🌐 Multi-language — Kinyarwanda, French, and English
- 🔔 Push Notifications — delay and disruption alerts
🧗 Challenges & How We Solved Them
GPS accuracy in dense urban areas Bus GPS signals showed drift in Kigali's busier zones. We implemented coordinate smoothing logic to filter erratic data points and deliver a reliable position reading to users.
Multi-language UI complexity Supporting Kinyarwanda — which has limited developer resources — required rethinking our UI layout so nothing broke when text length varied across languages. We solved this through a simplified, flexible component structure.
Internet connectivity during testing Connectivity drops during peak hours affected our testing cycles. We scheduled testing sessions during off-peak times and built the app to handle intermittent connections gracefully.
Remote team coordination We moved from purely async communication to structured in-person planning sessions combined with Slack and Trello for day-to-day task tracking — which significantly improved our output quality.
📚 What We Learned
- Real-world GPS data is messy — cleaning and validating it is as important as the features built on top of it
- Building for multiple languages from day one is far easier than retrofitting later
- User trust in a transport app depends on reliability, not feature count — if the GPS is wrong once, users disengage
- Cross-functional team collaboration under time constraints sharpens both technical and communication skills faster than any classroom setting
🌍 Real-World Impact
Rwanda has over 1.3 million daily public transport users in Kigali alone. HanoBus targets this population directly — starting with the most used routes and expanding as transport operator partnerships are established.
Beyond Rwanda, the system architecture is designed to be replicable across other African cities facing identical public transport information gaps.
🔭 What's Next
- Full deployment on Google Play and Apple App Store
- Formal partnerships with Rwanda transport operators to install GPS hardware on buses
- Expansion to additional cities: Musanze, Huye, Rubavu
- Data analytics dashboard for transport operators
Built With
- api
- authentication
- cloud
- firebase
- firestore
- functions
- gps
- javascript
- location
- maps
- messaging
- react
- services
- slack
- trello
- typescript
Log in or sign up for Devpost to join the conversation.