Voter Resource Application

Chester County Democratic Committee (CCDC)
Chester County Democratic Committee
Industry :
Nonprofit
Sector :
Government
Politics
Political Party
Size :
Small,
4 Officers
< 50 Volunteers
Type :
Summary :

It is said that “the future belongs to those who show up” and in our fast-paced environment, showing up is often a mobile notification away.

Client

The Chester County Democratic Party believes in “Freedom, Fairness, and Opportunity for all Americans, regardless of what they believe, who they are, and where they came from.” The political committee organizes volunteers to support specific candidates’ campaigns, register people to vote, canvass in their neighborhoods, phone voters to tell them about who’s on the ballot, and greet voters outside the polls on election day.

Motivation

When Bill Phifer, Chair of the Communications Committee, and I began talking about my internship with the Chester County Democratic Committee (CCDC), many options were discussed. Several possibilities included: 1) gleaning insight into the psyche of the local voter by crunching voter statistics using Python; 2) giving the CCDC web site a face lift, outfitted with a custom, clean and responsive WordPress theme; 3) adapting to new methods of voters’ information access, i.e., smartphones. As the discussion progressed and the election quickly approached, it became apparent that Bill wanted to harness this opportunity to develop a mobile application for the upcoming 2016 Election.

Management and Organization

I began researching mobile application development and the range of free and publicly available Application Protocol Interfaces (APIs) that would provide the data necessary for a useful application. Quickly, I focused on developing the application using the Ionic Framework and Google’s Civic Information API. Realizing I had only one month to develop and test the application before submitting it for review, the compressed time-line and unforeseeable learning curve revealed themselves to be most concerning obstacles the project would face.

Improvements and Solutions

As a hybrid mobile application framework, Ionic would provide the same user experience as an application developed with native iOS or Android software. Also, a hybrid framework offered me the ability to create an application with technologies such as HTML and CSS, while using the Model, View, Controller design pattern that I was already comfortable using. Again, Ionic would manage that learning curve for myself and future developers, I bet, making the time-line doable.

The Civic Information API provided the necessary data, specific to that individual user, to give our application the functionality that would make it useful to a range of users, each with a unique requirement. An added perk of using a public API is that the CCDC would not have to maintain the data themselves. Also, once I programmatically connected the mobile application with the Civic Information API, the future functionality of the application could grow to take advantage of more of the API’s features.

Achievements

The final application and rapid development time proved the greatest challenge and unknown variable for the project, but ultimately I was able to deliver a helpful resource to voters and poll watchers in time for Election Day. Based on a voters’ home address, our mobile application would provide the user with the candidates on the ballot for their unique location. This functionality was made possible using a query to an external API that supplied the application with a response, to be parsed to guide the user as they prepared to vote.

Political change can have a profound effect on our future. Through the process of developing the CCDC application, I was fortunate to define the tool set that would offer a range of future political volunteers and developers the ability to contribute to the political process. As the Democratic Committee regroups for the next election cycle, the technical solution I defined and executed would offer a limited learning curve and solid code base that could allow the application to be updated by myself or another developer after its initial launch.

Want to dig around in the actual code? Check out this solution on GitHub.