GithubHelp home page GithubHelp logo

bernie-2016 / ground-control Goto Github PK

View Code? Open in Web Editor NEW
63.0 12.0 25.0 9.45 MB

Central volunteer and data portal

Home Page: https://organize.berniesanders.com

License: GNU Affero General Public License v3.0

JavaScript 64.82% HTML 26.57% CSS 8.16% PHP 0.20% Shell 0.25%

ground-control's Introduction

Ground Control

Ground Control is the campaign's central platform for creating, managing, and increasing turnout to events. It contains several key tools used every day by campaign volunteers and staff:

  • An administrative interface for editing and approving events
  • An event creation tool
  • Call and email tools for event hosts to increase turnout
  • A constituent lookup tool for administrative use
  • A constituent event dashboard to allow uploading of data files for review by our data team

Getting Started

OS X

In OS X, we currently run everything locally using a Procfile and node-foreman. To get started, install Node.js 5.x and Homebrew. Then clone this repository and cd into ground-control. Then do the following:

npm install
./setup-osx

Then you should be able to start Ground Control on http://localhost:3000 with

npm run dev

Windows & Linux

On Linux, follow the same directions as OS X above, but substitute ./setup-linux for the equivalent OS X script.

You will also need to have Docker and docker-compose installed to provide your database.

Environment Variables

You can find environment defaults in .env.sample. The first time a setup script is run, .env will be generated with these defaults.

If you ever need to generate a missing .env, run

npm run gen-env

Contributing Stories in Ready Stories in Ready

Want to help out? You can jump right in to see issues that are ready to be tackled by looking at the status-ready issue label. If you are just getting started with the project, also check out the newbie-friendly label.

You can also see an overview of where all of our issues stand at https://waffle.io/Bernie-2016/ground-control

We use Gitflow to accept pull requests. To submit a change:

  1. Fork the project to your own GitHub account (click "Fork" on the project page in GitHub)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

For code review and discussion, ping @jlegrone on the berniebuilders slack.

More Info

Read our wiki for more guidance on development and other FAQs.

Contribution Activity

Throughput Graph

License

This project is licensed under AGPL.

ground-control's People

Contributors

al3x avatar bahoo avatar boucher avatar cjmabry avatar fkautz avatar jlegrone avatar maclover7 avatar phearzero avatar samzhang111 avatar schneidmaster avatar spencercdixon avatar waffle-iron avatar zestyping avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ground-control's Issues

Import the phonebank-rsvp into new call tool

  • Add event type and event attendees models
  • Create BSDSurvey and BSDEventSurvey
  • Make it possible to define in call assignment creation which survey renderer to use
  • Make it show nearby events to be RSVP'd to
  • Hardcode targets for assignment
  • Grab the form data from the BSD iFrame, send it to backend and make the RSVP.
  • Add something to the RSVP creation call to track it

Make a proper deploy step

The way it currently is being deployed is not a good way. This means:
a) Don't use webpack-dev-server in production
b) Don't use babel-node in production
c) Switch out the private SSH key being used for compose.io to be an app user.
d) Remove the maestro conference keys from the codebase and put those in heroku config. Reset these keys from maestro as well.

Add pagination to group call list

Currently I'm returning the first 50 to the frontend and cutting off the rest. Use connectionArgs correctly and return a paginated list.

Seed dev data

Otherwise it's impossible to test the phonebanking tool.

Finish homepage/welcome page

This is the VolunteerDashboard component. Flesh this out, hook it up with the login component once that is done.

Switch from MaestroConference to our own system built on Plivo

This is a big big project and probably not one we should really be doing, but given how many complaints there have been about voice quality on maestro conference, it's worth talking about.

Plivo seems to be the new hotness compared to twilio, and a lot of reports that it has better audio quality than Twilio.

Add Clearbit integration

We should look into Clearbit to have attached notes on users when we talk to them. Might be interesting, might not.

Add Metabase integration

Once we get #26 in, we should start doing some useful metrics on the data. Metabase seems cool (and might support RethinkDB soon).

Create call assignment logic

Currently we have not hooked up how to show who gets called for a particular assignment. The logic here needs to copy the logic from the old call tool +

  • Default to calling people closest to the caller. We should be able to do this if we store point data per person of their location.
  • Add a way to limit how far out a caller's callees can be.

Add backend BSD data sync process

The way this will work is:

  1. Stork job to export CSV of all our data
  2. Some script that diffs this CSV with the last exported CSV
  3. Script to turn CSV data into Ground Control data.

We could possibly just do this with amazon lambda so we don't have to build out another service.

Design help

Get someone better at design than me and think through how this dashboard should actually look/come up with a design for it. Especially need some design help on the group call form.

Make a /login endpoint and figure out how to redirect people there on 401

For a lot of views (such as the VolunteerDashboard), we just want to show the person something different based on if they are logged in or not. But for some endpoints (such as viewing a particular call assignment), we want to redirect you to /login that has the login component on it.

This probably means building in support for understanding 401s in the RelayNetworkLayer.

Make a calendar interface to call scheduling

I have a somewhat broken GroupCallCalendar.js React Component. Make this work so that when you generate a bunch of calls, you can schedule them by just dragging them around on the calendar.

Create view for managing persons

It should be possible for us to start looking at persons, adding persons, and making lists of persons (both dynamic via ReQL queries and static).

Add authentication

We should not make it possible fro just anyone to hit this endpoint and start making maestro calls.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.