🇺🇸

Campaign Trail: virtually manage political campaigns

Published
January 20, 2012
Tags
web frameworkspolitics

Campaign Trail is an online organizer I'm working on for social movements and campaigns. Rohan Ram and I are developing the product for use in Don Bivens' 2012 U.S. Senate Campaign in Arizona.

Here's a screenshot of the newsfeed I just finished:

image

Users can create projects and events with assignable tasks, ask and answer questions about the campaign, contribute pictures, articles, and other media, interact with moderators, message other users, and more.

What follows is a design overview and a technical overview, with more screenshots at the end.

Design

Campaign Trail is meant to look and feel like a white-labeled social organizer commissioned for every campaign. Although it emphasizes a red, blue, charcoal, and pearl color scheme, the header is customizable with campaign media, and campaign administrators have special access to moderation features, along with the ability to customize widgets, including events, questions, media, and projects. Users can be dragged and dropped between tasks, making the look and feel lively and interactive.

Frontend

Campaign Trail is written in HTML5 and CSS3, and it relies heavily on JavaScript, jQuery, and WebSockets, which provide an asynchronous experience that rarely requires new page loads. Organizational cells, like events and projects, load in contained views on top of the main widget page, and all cells are searchable. Tasks are editable inline. An intelligent JavaScript object prevents elements on the page from becoming outdated as a user interacts with the site, and it updates users of the activities of others in real time.

Backend

Campaign Trail is a Ruby on Rails application created with Ruby 1.8.7, Rails 3.1.0, and several Ruby plugins, including Devise and Paperclip. The Ruby on Rails framework allows the elegant separation of models, views, and controllers, which interact to read from and write to the database, route URLs to coded methods, and render HTML pages or emails.

Models like “Event,” “Project,” and “User” map to tables in the database, which flexibly supports SQLite3, MySQL, and PostgreSQL. Several models, like projects and media, are based on Ruby modules that control functionality common to all cells within widgets in the campaign. Campaign Trail can send email notifications for database activity in any table, and all activity is validated for security and consistency.

Screenshots

The on-boarding screen:

image

The filtered newsfeed for Bivens' campaign:

image

The detail view for a project:

image

Please send me feedback, as always!