With people choosing to take the bus as their primary mode of transportation, it is important for users to be updated on exactly when their next bus would be arriving. Two of our team's members are frequent commuters who have faced many issues due to not being able to access real-time transit data on the fly. Either due to poor data connections or no data access at all, we were often left in the dark as to whether a bus was coming, or have missed it due to early departures. We also realized that there must be countless others out there who lack access to mobile networks and we wanted to break this simple barrier that could be adversely affecting their lives.
What it does
With WheresMyBus?, users just need a phone number to access accurate estimates of when a bus will be arriving at their stop. The user would simply send the stops' id/number (which is located on the bus stop sign) to the WheresMyBus? number. The service would then send back a real-time estimate of all the upcoming bus arrival times for that stop.
How we built it
We first set up a liveshare environment on Visual Studio Code to allow us to work on the code at the same time. After, we went on the Vonage API website to set up our phone number and to get the SMS features working through the code. We had to make sure we were able to send an SMS and receive one as well. We then researched for a suitable transit API that would allow us to receive real-time updates on the buses in Toronto. After making and parsing through the requests we made to the Vonage and the NextBus APIS, we combined those files into one and implemented it through a flask web server.
Challenges we ran into
Our team decided to work with a framework that none of us were familiar with (Flask), so learning how it worked was an obstacle we faced. We also switched from using the Twilio API to using the Vonage API mid-way, so that took some figuring out to do. Moreso the biggest challenge we faced was finding a suitable public transportation API that provided real-time data. The first one we tried to use proved to be very difficult to understand so we decided to find another one, which ultimately worked much better.
Accomplishments that we're proud of
Ultimately finishing and having a working prototype is something we're very proud of after countless hours of hard work. Initially, we were planning on making a project with tools and languages that everyone was aware of, however, we were then reminded that we had attended this hackathon to learn new things! Therefore, we decided to take on the challenge of using Python and Flask to create the backend and we got our hands messy!
What we learned
Our team learned many new skills through this project. Firstly we all learned how to set up a basic backend server using Flask. We also figured out how to work with different types of APIs, and how to work with the JSON output they usually give. As well, we figured out a neat way for all of us to collaborate simultaneously (VS Live Share) which worked really well for us.
What's next for WheresMyBus?
Next steps include: adding support for more transit systems (ex. MiWay, Brampton Transit, etc.); ability to check more information (ex. destination arrival time); added user preferences (ex. favourite routes), and cloud integration.
Sponsor prize: Vonage