Detroit consistently ranks among the most dangerous cities in the United States, with disproportionate counts of violent crime occurring in inner cities and low-income suburbs. Paired with dozens of inner-city schools closing due to a lack of funding and underperforming test scores, a lack of substantial public transit puts some of the most threatened communities into a self-replicating cycle of poverty and miseducation as they continue to travel further and further to find schools or jobs.

Our team was particularly inspired by the user story of an inner city student going to school. We drew from personal experiences of riding a public bus alone for the first time, and recognized the jarring differences between our stories and those of a middle school commuter traveling over two hours to attend their nearest school. We felt especially privileged, because despite how anxious we once were, our bus systems did not loop through some of the most dangerous neighborhoods in the country, especially through neighborhoods of high drug and gang violence. From there, we brainstormed Bus Buddies, because no child should ever feel afraid while pursuing an education.

What it does

Bus Buddies is a public safety geolocation mobile app that generates a “safest route” by comparing bus routes against areas of high crime. It lets the user communicate with friends, family, and an emergency dispatcher if they are in distress. The user identifies their point of origin and a destination, which the app’s algorithm uses to plan a course that circumvents areas of high crime. The app continually monitors the user’s location in 10 minute bursts. In the event that the user is endangered, tapping the ‘alert’ button located on the lower half of the screen sends a SMS message detailing a specific geoposition to the predetermined “buddies.” The profile is then also sent to the emergency dispatch service, who will call the phone and proceed with further action.

How we built it

We used Ionic to build the client-facing application in a ecosystem and convert it down to their respective native builds. The authentication server and database are built using MySQL as the database, Node as the server, and Sequelize as an ORM. We used Twilio’s API to send the text messages to the buddy’s given phone number.

Challenges we ran into

Our team pivoted frameworks multiple times. Initially, we intended to develop the app on Swift, but one of our team members was running a Windows machine, making XCode not a viable option. We then spent about four hours learning React Native for its cross-device portability and began developing the components in React Native, but because no one on the team was familiar with React Native, it was very much like the blind leading the blind. A mentor saw our frustration and suggested we try a GUI framework, Ionic, which proved to be the most successful because it’s built on top of Angular.js, and Patrick was already familiar with Angular.

We also had a hard time choosing a server to store username and password caches on. The initial plan was to use Firebase because we believed its authentication process paired well with React Native. However, after deciding against using React Native, we were still on the market for a new infrastructure. We initially considered MongoD, but ultimately decided on MySQL. This was because we needed fast database aggregation functions in order to quickly compute heuristic availability, and SQL aggregations are faster than Mongo’s by a factor of twenty-five.

Accomplishments that we're proud of

None of us have experience developing mobile apps, so finishing with a MVP is a real MVP in our eyes.

Pat - Learning to rapidly switch operational models in an incredibly fast-paced environment. Also learning mobile development with no prior experience whatsoever @_@

Fiona - I joined the team as a beginner hacker with little to no experience in programming. Patrick and Yidi took me under their wing and taught me what GitHub was and walked me through hundreds of lines of Javascript and React Native. I entered this Hackathon with undying enthusiasm and a limited understanding of programming but I left with a new group of friends and a passion to continue learning more.

Yidi - I’ve never delved into a project like this before. I’ve always enjoyed back end development, but I really struggled with keeping my head up and being ready to answer questions when my teammates needed me the most, usually at 4am.

What we learned

Get a mentor early. Sometimes the easiest solution is the best solution, but we didn’t know that without a mentor like Tae to show us. Even fifteen minutes of guidance can save you from five hours of React Native hell.

What's next for Bus Buddies

Include "photos" as feature on user profile.

Include dynamic mapping that displays the safest course around high crime areas.

Add user configuration settings

Expand scope beyond Detroit

Share this project: