Inspiration

In a city like San Francisco, many issues requiring attention from the Department of Public Works go unreported because citizens either don’t know who to report these issues to or don’t have the time to fill out complex ticket forms.

Snapworks crowdsources issues for the DPW by lowering the barrier to participation for the average citizen - simply snap a photo and the request will automatically be generated and routed to the correct department.

We also often hear about civic-minded citizens donating their own time and effort into making their communities better - we wanted to highlight these opportunities and create a community where such activities are easy to coordinate and participate in.

What it does

Snapworks allows thousands of ordinary smartphone-equipped citizens identify issues like potholes and litter in their neighborhoods and report them by simply taking a quick snapshot which is uploaded to the Snapworks cloud.

In addition to letting users report issues, the Snapworks mobile app also lets our users browse existing issues and even connect with each other and coordinate volunteer cleanup efforts.

Snapworks also includes an administrative dashboard which allows department of public works employees, government officials, and policy makers insight into both realtime and historical issues data to help with civic improvement initiatives.

How I built it

The Snapworks Issue Data Cloud backend was implemented as a Python/Flask REST API backed by an ObjectRocket MongoDB database. This system keeps track of all of the issues users report, including photos, timestamps, and geolocations. It also hosts the realtime messaging backend behind the Snapworks Volunteer Platform, and tracks all user comments, likes, and volunteering messages.

The Snapworks Volunteer Platform backend was implemented as a Node.JS application which talks to the Issue Data Cloud, serves up the admin dashboard, and provides an API used by the mobile app.

The Snapworks Mobile App was implemented using the Ionic / AngularJS mobile application framework running on top of Apache Cordova. For this prototype, we only tested and submitted an Android build, but our decision to use Cordova makes developing and releasing an iOS app is extremely easy.

The Snapworks Admin Dashboard was implemented using AngularJS with Angular Material theme, integrating charting support from Chart.js. It pulls data from both the Issue Data Cloud and the Volunteer Platform and renders it on a site designed for desktop browsers.

Challenges I ran into

We had hoped that our app would support the full range of services and issues which can be reported to the San Francisco Department of Public Works, but we were quickly overwhelmed with the sheer number of options.

For this prototype, we chose to focus on only the most commonly observed and reported issues, such as litter, graffiti, and potholes. This enabled our app to remain simple and user-friendly, which was its primary goal.

Accomplishments that I'm proud of

As a small team of just two individual developers, we were very proud of our ability to create a fully featured app from scratch that allows citizens to take an active part in their community. Many San Francisco citizens are frustrated by long-standing public works issues but are unsure of how to reach out to the DPW or ask their neighbors to help out. We’ve created a way for them to easily reach city employees and self organize.

We also created an easy way for city officials to gather information from and engage with their citizens through our administrative dashboard.

What I learned

In brainstorming ideas for this challenge, we came to appreciate just how difficult a problem public works actually is. Any solution must balance the needs of both concerned citizens and the Department of Public Works.

We challenged ourselves to think outside of the box and build something that could have a long-term impact on how ordinary citizens engage with their community to make it better.

We also learned that building a prototype and demo is just the first step. For each feature we implemented, we came up with another dozen that we wished we could also add. For each minute we talked with others about this idea, we wished we could spend an hour more. And for each user we had test our app, we wished we could launch with a hundred more.

What's next for Snapworks

We’re excited participate in this challenge and were very happy with everything we were able to build out for Snapworks from scratch in such a short amount of time.

The initial reaction we’ve seen for Snapworks has been tremendously supportive - many of our friends would like to use Snapworks even after this competition, and we’re planning to roll out Snapworks slowly to different neighborhoods within San Francisco.

There is still much to do before Snapworks can be launched to the general public. Based on the feedback we receive from this challenge, we will make some changes to our platform, try to raise funding for Snapworks, and launch our first public beta.

In the future, we’d also like to explore the use of deep learning and image classification systems to automatically identify the type of issue being reported from the photo - this would make the Snapworks experience even more snappy!

Share this project:

Updates