Inspiration
Public transit apps often feel outdated, confusing, or unreliable, especially for students who rely on buses every day. We wanted to build something that actually feels like a modern navigation experience, similar to Google Maps, but tailored specifically for Bloomington Transit. Our goal was to make it easier to understand routes, plan trips, and know exactly when your bus is coming without frustration.
What it does
BLBus is a real-time transit app that helps users view bus routes, track live bus locations, and plan trips across Bloomington. Users can select a route to see all stops and live bus positions on a map, or use the “Plan a Trip” feature to find the best route between two locations. The app also provides smart alerts and notifications to let users know when their bus is approaching, helping them avoid missing it.
How we built it
We built BLBus as an Android app using Kotlin and Android Studio. We used static GTFS data to represent routes, stops, and schedules, and integrated GTFS-Realtime feeds to display live bus positions and arrival updates. Google Maps was used for visualization, including route polylines and stop markers. We implemented a trip planning system that matches user input to routes and stops, and built a real-time alert engine that tracks bus progress. We also integrated Firebase Cloud Messaging to support push notifications and alert users even when the app is not open.
Challenges we ran into
One of the biggest challenges was working with GTFS and GTFS-Realtime data, especially mapping real-time trip updates back to static route and stop data. Ensuring that route IDs and trip IDs matched correctly required careful debugging. We also faced issues with Android build configuration, Firebase integration, and dependency mismatches. Another challenge was maintaining clean architecture while rapidly iterating on features like trip planning, live updates, and notifications under time pressure.
Accomplishments that we're proud of
We successfully built a fully functional transit app with real-time tracking, trip planning, and smart notifications. The UI is clean, intuitive, and similar to industry-standard apps. We implemented a stop-based alert system that tells users exactly when their bus is approaching. We also integrated push notifications, allowing the app to deliver alerts even when it is not actively open. Overall, we created a product that feels polished, practical, and genuinely useful.
What we learned
We gained experience working with real-world transit data formats like GTFS and GTFS-Realtime. We learned how to design and structure a scalable Android app with multiple data layers, including repositories and view models. We also learned how to integrate external services like Google Maps and Firebase, and how to debug complex build and dependency issues. Most importantly, we learned how to prioritize features and ship a complete product under tight time constraints.
What's next for BL BUS
In the future, we would expand BLBus to support multi-leg trips with transfers, improve routing accuracy, and refine ETA predictions. We would also enhance push notifications with more personalized alerts and better background reliability. Additional features could include saved routes, favorites, and historical data insights. Ultimately, we want to turn BLBus into a fully featured, production-ready transit app that could be used beyond Bloomington.
Built With
- kotlin
Log in or sign up for Devpost to join the conversation.