In all walks of life, getting up in the morning is quite possibly the most tortuous moment of the day. Compounding this painful experience is the stress of worrying about the timing of your school bus. As high school students, the inconsistency of school bus arrival times can force students to wake up early or rush breakfast, losing valuable sleep and nutrients, only to discover that the bus is arriving late. Unfortunately, there is no such app that notifies the high school student about their buses arrival time. Any app that comes close to this tracks the bus and makes that data available to the students, something our team sees as a major security hazard to all of the students and the driver. So we set out to create a service in which students will have a better idea of when their bus is coming, without creating any security risks.
What it does
Bus Notify is a mobile-web coordinated application that notifies students of their bus’ anticipated arrival using crowdsourced bus routes and driver cooperation. Students collaborate to create routes by inputting their individual stops on a website. The driver can obtain the route code from the students and the must allow a background service to run on their phone during their bus route. A custom algorithm determines when the bus is about two minutes away from a stop and sends a text to the students at that stop. Now, a student doesn’t have to worry about whether their bus will be late or early, because the app makes it easy by telling the student how long they have until their bus comes. Currently the app only sends a notification at 2 minutes before the bus reaches a stop, however in the future we plan to have more information about their bus available to the students.
How we built it
We approached this app with a divide and conquer strategy. One person was responsible for the server, while someone else was responsible for the Android app. Our third person can be thought of as the glue between both platforms; he enabled interaction between the server and the Android app. The server was built in NodeJS and used the Twilio API to provide the SMS feature. The Android app was built the classic Android way, in Java, and used the Google Play Services API to collect data about movement and location.
Challenges we ran into
Getting the location of the bus driver and knowing whether they were moving or not was a difficult task to do. On Android, we had to run two different asynchronous services to retrieve this data, however we had to send it within one request to the server, so that was complicated. The algorithm was challenging to visualize at first because it was not a simple mathematical algorithm, but instead a complex algorithm with a series of calculations and API calls that can produce a variety of results, all of which must be accounted for. The last problem we had, and possibly the hardest was finishing the Android app after our teammate responsible for building it had to leave.
Accomplishments that we're proud of
One of our team members had to go home early. This teammate was the responsible for the Android app. Unfortunately, he was unable to finish the app, so we had to pick up where he left off. This involved understanding his code and reading through significant documentation, not to mention having to work on the server in parallel.
What we learned
We learned many hard skills such as using various API’s such as Twilio and Google Maps. But even more than that, we learned a crucial skill for software development, working together with a team. In software development, there may only be one product, however the team behind the product may be 5, 10, or even 100. For the product to work and be successful, every team member's module must “play nice” with the other team member’s modules. Otherwise, all of the code will just be a large blob of code with either missing or no capabilities, a lesson we learned the hard way when we built the server and the Android app our own ways, with our own strategies and assumptions about the product.
What's next for Bus Notify
What’s next? Judging! In all seriousness, the team behind Bus Notify plans to take the app to market of course. However, it's not that simple. Because our product requires crowdsourced data, and involves the tracking of a bus driver, we must ensure that our data collection methods are as easy to use as possible for users and we must guarantee complete security for the students and the bus driver despite having information about the bus driver’s location at any given moment. We are also considering to change the name to “Two minutes” because the only current notifications that a students will get about their bus is that it is two minutes away, or it is here.