node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


Build Status Dependencies Test Coverage

Campaign finance for everyone

The Federal Election Commission (FEC) releases information to the public about money that’s raised and spent in federal elections — that’s elections for US President, Senate, and House of Representatives.

Are you interested in seeing how much money a candidate raised? Or spent? How much debt they took on? Who contributed to their campaign? The FEC is the authoritative source for that information.

The new is a collaboration between 18F and the FEC. It aims to make campaign finance information more accessible (and understandable) to all users.

FEC repositories

We welcome you to explore, make suggestions, and contribute to our code.

This repository, fec-style, houses our shared styles and user interface components.

All repositories

  • FEC: a general discussion forum. We compile feedback from the feedback widget here, and this is the best place to submit general feedback.
  • openFEC: The first RESTful API for the Federal Election Commission
  • openFEC-web-app: the FEC’s web app for exploring campaign finance data
  • fec-style: shared styles and user interface components
  • fec-cms: the content management system (CMS) for the new

Get involved

We’re thrilled you want to get involved!

  • All contributions to this project will be released under the CC0 dedication alongside the public domain portions of this project. Read our contributing guidelines. Then, file an issue or submit a pull request.
  • Send us an email.
  • If you’re a developer, follow the installation instructions in the page of each repository to run the apps on your computer.
  • Check out our StoriesonBoard FEC story map to get a sense of the user needs we'll be addressing in the future.

Set up

Install dependencies

$ npm install

Generate icons:

$ npm run build-icons

Run unit tests:

$ npm test

Style Guide

The FEC Pattern Library is accessible on this Github repo.


We use Semantic Versioning:

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes. Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

When changes in master are ready to be released, follow these steps to update the package version and publish to npm:

npm version <major | minor | patch>
git push --follow-tags

Use npm version minor or npm version major for minor and major updates respectively, and npm version patch for small updates that only add small bits of functionality to existing features. For details on npm versioning, see npm version --help.

Travis will run a clean build with tests. Assuming all goes well, Travis will publish to npm for you.

Downstream applications should pin versions as appropriate. For example, to get bug fixes but not new features, pin to the minor version:

    "dependencies": {
        "fec-style": "~1.0"

Licensing and attribution

A few parts of this project are not in the public domain. Attribution and licensing information for those parts are described in detail in

The rest of this project is in the worldwide public domain, released under the CC0 1.0 Universal public domain dedication. Read more in