Inspiration
As teenagers in Washington State, we've become increasingly reliant on public transportation with the expansion of the Link light rail and the addition of new bus routes throughout our communities. But we're far from the only ones using our state's transit system. Every year, passengers under the age of 18 take more than 16.5 million transit trips, and public transportation also serves thousands of workers, college students, and tourists every day. In fact, according to the Washington State Department of Transportation, monthly employee boardings increased 37%, rising from approximately 30,000 in mid-2023 to more than 41,000 in early 2025.
With this increase, one problem has become increasingly apparent: navigating public transit can still be confusing and intimidating, _ especially _ for first-time riders or anyone unfamiliar with a route. Existing transit apps focus on showing routes and schedules, but they don't actively guide users throughout their journey or help them recover from common mistakes like boarding the wrong bus or missing a stop.
As ridership continues to grow, making public transportation easier to navigate has become more important than ever. That's why we built TransitBuddy.
What it does
TransitBuddy is an intelligent transit companion designed to make public transportation accessible for everyone. First-time riders, tourists, students, and anyone unfamiliar with a route can benefit from the app. Rather than simply displaying directions, TransitBuddy provides step-by-step, real-time guidance throughout a journey. Users can discover the best route, track their bus and remaining stops, receive alerts when it's time to board or exit, and automatically reroute if they miss a stop or board the wrong vehicle. By combining live OneBusAway data with an intuitive, guided experience, TransitBuddy helps riders navigate Washington's transit system with confidence.
How we built it
TransitBuddy is a React Native + Expo app built entirely on top of the OneBusAway REST API for real-time Puget Sound transit data, since OBA doesn't expose a trip-planning endpoint of its own. We synthesize one: a custom planner progressively searches for stops around the origin and destination (expanding the radius from 800m out to 5 miles to handle both dense downtown grids and sparse suburban areas), then builds candidate itineraries in three tiers — direct routes, one-transfer routes, and a two-transfer graph search that discovers connecting routes (like Link light rail) through shared stops — falling back to a walk/drive suggestion only if no transit path exists. Each candidate is scored by a "Stress-Free" algorithm weighing transfers, walking distance, wait time, and live delay data, and tagged Fastest/Stress-Free/Least-Walking so riders can pick the trip that fits them. Once a trip is chosen, a Strava-style "Ride Companion" screen tracks the rider's live GPS position against the planned route on a map, detecting if they've boarded the wrong bus or are approaching their stop and firing local notifications accordingly — all styled with NativeWind/Tailwind, React Query for API caching, and full dark-mode and imperial-unit support throughout.
Challenges we ran into
One of our biggest challenges was setting up and deploying the app with Expo while integrating multiple technologies, including the OneBusAway API, location services, maps, and real-time transit data. Debugging configuration issues and ensuring that live updates worked reliably across devices required extensive testing and iteration. Balancing technical implementation with creating an intuitive user experience was another challenge, especially within the limited timeframe of a hackathon.
Accomplishments that we're proud of
We're proud of building a functional app that goes beyond traditional transit navigation. Instead of simply displaying routes, TransitBuddy acts as a _ real-time _ travel companion by guiding riders throughout their journey, tracking stops, and helping users recover from mistakes like boarding the wrong bus or missing a stop. We're also proud of designing an interface that makes public transportation feel more approachable for first-time riders, students, tourists, and other occasional commuters.
What we learned
Throughout this project, we learned how to work with real-time public transportation APIs, manage live location data, and design around the needs of end users rather than just technical requirements. We also gained experience integrating multiple technologies into a cohesive application and learned the importance of prototyping, iterative testing, and teamwork when developing a product.
What's next for TransitBuddy
The next update we're looking to add to TransitBuddy is a feature indicating road closures due to construction or severe weather. This way commuters can change their routes and find the next best options. In the summer months, road closures are common with the amount of construction happening city to city, and in the winter seasons heavy rain and wind storms result in further road closures that are hard to plan around. This feature could help offset the inconvenience caused by these delays.
Built With
- apis
- expo-go
- expo-location
- expo-router
- jsx
- nativewind
- react
- react-native
- sdk
- typescript
- vs-code
- watchman



Log in or sign up for Devpost to join the conversation.