democracy.io
JavaScript CSS HTML Shell
Latest commit a26d98f Feb 24, 2017 @wioux wioux committed on GitHub Merge pull request #102 from EFForg/0217_deploy_fixes
Use redis credentials. Move middleware past swagger req parsing
Permalink
Failed to load latest commit information.
analysis Adds in an analysis script to parse the contact-congress YAML files t… Apr 30, 2015
bin Use js for update-congress script Oct 20, 2016
config Use raven/ravenjs to report errors to sentry Feb 17, 2017
deployment Updates readme with more accurate deploy instructions. Feb 11, 2016
gulp Need ngRaven dependency to use Raven angular plugin Feb 17, 2017
models Fix tests to use new legislator lookup/fields Oct 20, 2016
server Don't use sessions or csrf protection Feb 24, 2017
test Fix ci Feb 6, 2017
www Need ngRaven dependency to use Raven angular plugin Feb 17, 2017
.env.example Use raven/ravenjs to report errors to sentry Feb 17, 2017
.gitignore Ignore .env Feb 15, 2017
.travis.yml Adds in a Travis CI yaml file and shrinkwraps DIO deps Jun 26, 2015
Dockerfile Need to build:prod after environment variables are set Feb 24, 2017
LICENSE Updates license, fixes #29 Jul 9, 2015
README.md Update documentation/notice. Congress API no longer used. Oct 20, 2016
congress.json Update congress.json Jan 9, 2017
docker-compose.yml.example Don't recommend volumizing ./config:/opt/democracy.io/config in devel… Feb 17, 2017
ecosystem.json5 Refactors the app to: Jul 17, 2015
entrypoint.sh Need to build:prod after environment variables are set Feb 24, 2017
gulpfile.js Refactors the app to: Jul 17, 2015
package.json Use raven/ravenjs to report errors to sentry Feb 17, 2017
server.js Attempts to make the codebase more of a standard express app, removes… Aug 18, 2015

README.md

Democracy.io

Build Status

Express & Angular app for sending messages to Senate and House members

(c) 2015 Electronic Frontier Foundation

Table of Contents

Background Info

Democracy.io is an app for contacting Senate & House members. It provides a user friendly wrapper around the individual member contact forms.

It uses APIs from:

Getting started

Redis

Ensure that Redis is running locally:

sudo apt-get install redis-server

or install manually via http://redis.io/topics/quickstart - making sure to read the "Securing Redis" section, especially if you install Redis manually.

App dependencies & build

npm install
npm run build

credentials

You can generate required creds by running

node bin/gen-creds.js

or:

After you've run npm install generate a salt for encrypting IP addresses and store it in your local.json file, under: SERVER > CREDENTIALS > IP > SALT

var bcrypt = require('bcrypt');
var salt = bcrypt.genSaltSync(10);
console.log(salt);

Set a session secret and store it in your local.json file, under: SERVER > CREDENTIALS > SESSION > SECRET

App Configuration

App config is controlled via the node-config module.

To set credentials, create a local-dev.json file under the config dir and override the SERVER.CREDENTIALS setting.

Alternately, you can use:

Run tests

npm run test

Running the server locally

Spins up a local server to serve the app, including proxying browsersync on top of the express server.

gulp serve

Deploying

To deploy the server, simply run:

pm2 deploy ecosystem.json5 production

For more instructions on setting up a production server, check /deployment/README.md.

Angular app

See the www/README.md for details