One of our team members is a regular participant in ChiHackNight, a weekly gathering for volunteer projects in civic tech. One of the most significant movements in civic tech is open data, and Chicago has many useful data sets on its Open Data Portal. We decided to take one of the largest data sets, Crimes - 2001 to present, and make it useful for an end user.
What it does
The mobile app displays a crime level for the user's current location, based on the history of incidents in a 0.5 mile by 0.5 mile square centered on the phone GPS location. It also calculates the local crime level 0.25 miles away in each of the four cardinal directions. The local crime level is displayed as a multiplier of the average crime level across the city. If the app is running in the background and the user travels into an area with a crime level above a certain threshold (1.75 x average), the phone sends a push notification to alert the user. The user can also view a map of crime levels across the city.
How we built it
The backend that pulls from the Chicago Open Data Portal API uses Python to calculate crime levels and respond to requests from the mobile app. The mobile app was written in the Xamarin framework with C#, which can be compiled to both iOS and Android.
Challenges we ran into
At one point, the backend was taking too much time and memory to pull data from the API. We optimized the variable processing to reduce memory footprint. Making sense of crime data was also difficult, which we resolved with some criminology research.
What we learned
We learned that frontend can be as important as backend, and a unified stack is critical to a successful application.
What's next for Danger Zone
Danger Zone is very scalable so the obvious step is to add more cities.