Before HackRU, our team member Tarun was studying in the Livingston Library. He was planning on arriving at the hackathon at 10:50, but he left too late from the library and missed the LX bus he was planning on taking. Our team was immediately in a frenzy. Would his spot be taken by someone else who was on the waiting list? Did we need to look for another team member? Luckily, Tarun was able to successfully enter the hackathon after 11 as it had not been capped yet. However, from this chaotic experience that started the hackathon for us, we struck upon a huge problem within our Rutgers campus. There are two common scenarios in the daily life of a Rutgers student: missing a bus or waiting for one. The time wasted on these two activities greatly decrease the amount of time available for students to be productive, whether it is missing valuable class time or having less time to complete assignments. Our app attempts to change that.
What it does
After the user inputs their Rutgers class schedule, our app sends a text to a student to notify him when it is time to leave his current location and walk over to the bus stop in order to reach his class. This text will be sent at a timely fashion allowing management of the student's time to be efficient as possible. The student will no longer have to keep refreshing the app to check when a bus is coming or have to account for when they have to leave their location, cutting down the possibility of missing a bus with an underestimate, and cutting down the possibility of long wait times with an overestimate. Our app figures out what bus stops the student needs to get to on what days, uses the Rutgers Bus APIs to calculate when the buses will arrive, chooses the right bus for the student, factor in traffic and time needed to walk to the nearest bus stops to and from the student's locations, and sends texts to the student on when exactly they need to leave to get to the buses they need for every single class that they have.
How we built it
We built a cross-platform (iOS and Android) app using Facebook's React Native framework. This communicates with a Python backend which uses the Geolocation API to find the current location of the user, the Transloc API to find the latest bus information in real-time and the Google Maps API to find estimated walking times in real time. We also used a Twilio API to send texts to the user and MongoDB to store user data.
Challenges we ran into
We had to figure out how to use the Rutgers Bus API, as well as connecting our react-native app to the python back-end. Creating algorithms to figure out estimated walking/arrival times was also challenging as we had to take into account factors that we did not even think about originally, such as having to account for the curvature of Earth when finding the distance between longitude latitude coordinates. Integrating all these APIs into one final cohesive product was also difficult, but the most rewarding in the end.
Accomplishments that we're proud of
Our app has a nice UI that we worked hard on. It was some of our group members' first hackathon so they never had the experience of being in a high pressure situation where the final product needs to be completed in such a short time. Overall we are just happy we learned this much, while also making an app that personally all of us plan on using after this hackathon is over.
What we learned
We learned how to take an idea to a MVP (minimum-viable-product). We also learned how to connect a mobile front-end to a back-end system using HTTP requests. Integrating the many APIs was also valuable experience we gained.
What's next for RU Moving?
Possibly getting on the app store and making students' lives easier. Improving our app to incorporate directions within the app so the user can promptly get to their location without any mishaps.