As interns in Chicago last summer, our team spent a lot of time walking around exploring the city. We quickly learned that there a lot of great places to check out in the city, but there also a few that are good to avoid. This is the same with all major cities including Detroit. Popular navigation apps such as Google Maps do not take the safety of the directions into account. We wanted to build an application to help people find the safest ways to get around Detroit.
What it does
SafeNav uses Esri Arcgis to get directions and map data. A user enters the destination they want to go to and Esri Arcgisreturns waypoints for that route. We then go through the waypoints and filter them down to consist of a list of waypoints that are > .15 miles apart. Our algorithm then checks the remaining waypoints against the Socrata City of Detroit Crime database. It does so by querying the api for violent crimes within a .15 mile radius at the current time of the day. Based off the results of the crime query, there was a second request to Esri to get a new set of directions excluding those waypoints with the highest crime rates.
How we built it
SafeNav is an Android application with a Flask backend. None of the team had experience writing API's so we took time researching possibilities. After looking at Django, Flask and Rails we decided that Flask would be the quickest to implement and did not need some of the more robust features of Rails and Django.
Challenges we ran into
There were two main challenges we had. One of the challenges was learning how to develop a REST API. From deciding on what platform fits our needs to how figuring out how routes are created then how to deploy that code. The biggest challenge was trying to develop an algorithm over the weekend that could factor crime data into directions. We spent much of our time trying to decide on how to find where the areas of high crime on the route were as well as how to find a safer route.
Accomplishments that we are proud of
We are very proud of getting an API running on flask that was able to do everything we wanted it to. Coming into the weekend with no experience with API development this was a great success for the team.
What we learned
At MHacks there were a few big lessons we learned. The first was that planning is important. We waited until the second day to decide on using Flask for the API. Another thing we learned was the structure and function of REST APIs. Coming into MHacks the team had experience interacting with APIs but never creating them. This gave us a different perspective of the challenges and architecture decisions that go into creating a REST service that have a major impact on all client applications.
What's next for SafeNav
The next step for SafeNav would be to continue to refine the routing algorithm. We would also look to develop iOS and web applications.