Campaign Trail: virtually manage political campaigns

January 20, 2012
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:


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.


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.


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.


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.


The on-boarding screen:


The filtered newsfeed for Bivens' campaign:


The detail view for a project:


Please send me feedback, as always!