Building CampaignHawk: An Open-Source Election Canvassing App with Meteor and React (Part 1)

Project Scope

The minimum viable product (MVP) is two-fold. It will need a web-view for campaign managers and a mobile-view for volunteers.

  1. Web interface for campaign managers
  2. Ability to add/remove/manage volunteers
  3. Ability to dispatch volunteers to canvas a particular area
  4. A map with imported voter data
  1. Mobile canvassing app for volunteers (primarily a map)
  2. Ability to add information on voters/households
  3. Geolocation

Bonus Scope

There are also a few additional features that would be fun to implement, but are not necessary for the MVP.

  1. Campaign autopilot that recommends actions
  2. Ability to accept donations for the campaign
  3. Integration with outside datasets
  4. Internal communication platform between volunteers and managers
  5. Auto-generated Federal Election Commission (FEC) compliant reports
  6. Gamification of canvassing/fundraising
  7. Location history map for volunteers while app is active

Step 1: Wireframing

I use Sketch for my wireframes and Invision for live prototypes. There are many different methodologies for wireframing. If you are not familiar with the process, I highly recommend this article by Tuts+. Since I’m building this app myself with no input from designers, I’m just going to go from sketch → code and skip all the intermediate steps.

Ignore the icons. They’re just placeholders at the moment.
Each icon has a tooltip describing the functionality of the tool.
Republican-Democrat data layer.
Voted in the last two years data layer.
Looks like the Republicans are really fired up about Issue X.
Modal for adding a new volunteer.
Modal for user list.
The first step is to select an area.
Amar has been selected to canvas that particular area.

Next steps

That should do it for wireframes. The next step is to start coding the app. We’re going to do the web app and the mobile app separately since their functionality is so different that they’re basically two separate apps that interact with the same database.



Software developer, founder, author - CarDash - Learn Phoenix -

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sam Corcos

Sam Corcos

Software developer, founder, author - CarDash - Learn Phoenix -