OpenCongress for Developers
At its core, OpenCongress is an open-source Ruby on Rails application for aggregating and managing open government data. Right now the opencongress.org website is focused on US Congress, but our vision is to bring tools for transparency and engagement to constituents of any governing body, from the UN to your local neighborhood association.
We rely on developers from the community to help us improve the code. Can you help?
Using OpenCongress data in your app
You can use OpenCongress data in your applications, provided you meet the licensing requirements (shown at right). Our API and RSS feeds provide all the data on OpenCongress, from official bill info to news and blog coverage to user-generated votes on bills and more.
OpenCongress - a Ruby on Rails application for displaying information about Congress
Getting started with our code
Start by installing all the packages required by OpenCongress. The main dependencies are postgres and ImageMagick; OpenCongress will not run on mysql or sqlite. The following commands are suggestions, but ultimately you'll need to get postgres running to be able to run the app. We are currently running version of postgres 8.4.4 in production.
sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev ruby1.8 ruby1.8-dev rubygems libopenssl-ruby imagemagick libmagick9-dev gcj-4.4-jre
For Mac OS X, start by installing MacPorts, then run:
sudo port install postgresql84 postgresql84-doc postgresql84-server ImageMagick md5sha1sum wget
or, if you want to use Homebrew (this will install version Postgres 8.4.4):
brew install imagemagick brew install https://github.com/adamv/homebrew-alt/raw/master/versions/postgresql8.rb
Follow the instructions after the packages install for initializing your database
Install the bundle:
[sudo] gem install bundler bundle install
Note for OS X: *You may need to specify additional compile options for your gems. Try:
ARCHFLAGS="-arch x86_64" bundle install
B. Database setup
Running the following commands will create an 'opencongress' user and empty databases for the three environments (test, development, production). The migration command will populate the development database with an empty schema.
rake db:init rake db:migrate
C. Solr (optional, recommended)
OpenCongress uses Solr to store some data. Running Solr is not required to run the web server, but some pages will break if Solr is not running. If you are going to import data, running solr is required or you will encounter errors.
You can run Solr with the following command (usually in the background and/or in a separate window):
D. Legislative Data (optional)
See note above about running Solr: it is required for importing data.
To import legislative data into your database, run the following command:
This will download data files from Govtrack and import them into your database. The default location for storage of the data files is
/tmp/opencongress_data but you can change this by editing
config/application_settings.yml. This task will import ALL of the data for the current session of Congress: it will take a long time and occupy a LOT of space on your filesystem! Keep this in mind before importing the data!
E. Starting the server
See note above about running Solr: it is not required, but recommended.
To start the webserver:
We are actively working to make the install process easier for new volunteers. Special thanks to Doug Cole for moving us along in this regard.
Copyright (c) 2005-2012 Participatory Politics Foundation
OpenCongress is licensed, as a whole, under AGPLv3. Components added prior to OpenCongress version 3 (July 27, 2011) were and are licensed under GPLv3. All components added for or after OpenCongress version 3 are licensed AGPLv3. When you contribute a patch to OpenCongress, it will be licensed under AGPLv3. See LICENSE-AGPLv3 file for details.
- Data API docs & RSS feeds
- GitHub repository
- Lighthouse tracking
- Development roadmap
- Developer e-mail list
- IRC: chat.freenode.net channel #opencongress
Want to work on OpenCongress, show off your use of our API, or just say hello? Send us an e-mail () with a short note of introduction. We don't bite.
OpenCongress site code is available available on github and is licensed under the GNU Public License (GPL), so we encourage you to contribute to our code and reuse it in non-commercial contexts, as long as attribution to OpenCongress is given.
We encourage you to remix and excerpt our site and wiki content, as long as attribution to OpenCongress is given and you share your content as well. Our site content is licensed under the Creative Commons Attribution-Share Alike 3.0 US License, and our wiki content is licensed under the GNU Free Documentation License (GFDL).