Skip to content
A mobile-first web app to help your curator team vote hundreds of CFP submissions, bias-free
JavaScript Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
components
context
docs
pages
scripts
server
.editorconfig
.env.example
.gitignore
.huskyrc
Dockerfile
LICENSE
Procfile
README.md
app.json
cfp-export_green.csv
cfp.config.js
commitlint.config.js
docker-compose.yml
index.js
next.config.js
nodemon.json
package-lock.json
package.json
routing.js

README.md

CFP Vote Application

Deploy

A mobile-first web app to help your (distributed) curator team to vote on hundreds of CFP's. At JSConf Budapest we used this app to vote on more than 600 CFP submissions.

Try it out on 200 random generated CFPs

Some example on what can you expect:

  • login to the app, using GitHub
  • see your progress
  • the proposals are displayed clean, you can only read the title and the abstracts
  • voting labels and values can be customized if necessary

Screenshots of the mobile view of the app


The goal here to vote bias-free, distraction-free, to do anonymized voting, reading the relevant part of submissions one-by-one. You won't see who sumitted the talk, only the title, and abstracts. You won't see what your peers voted either.

This app setup aligns to the JS/CSSConf EU CFP voting way:

  • First round: go through every submission, and vote on them on a scale from 1-5
  • Evaluate first round: pick the top ~80 or pick the top talks with at least N points
  • Shortlist round: go through the shortlisted submissions, and vote on them on a scale from 0-2

At this point you can export the submissions to CSV/XLSX and see each vote, and their summarized votes in rounds, and move on to the next steps, de-anonymizing and curating the talks for your event.

To help you evaluate rounds, the app has a Statistical view, showing the talk/vote distribution (without any details) and progress of team members.

Screenshot of the statistics page

Setup for your event

This quick guide should help you to set up this app for your event, using GitHub and Heroku.

You will have to set a few variables for your app:

  • ADMINS - a list of GitHub usernames, who will have administrative roles (["user1","user2"])

These are necessary for you app to log in using GitHub

  • GITHUB_CLIENT_ID
  • GITHUB_CLIENT_SECRET
  • GITHUB_REDIRECT_URI

Step 1: GitHub OAuth Setup

Check out our guide on how to create an OAuth App

Step 2: Set up the App

Just use the Deploy to Heroku button ot the top of this readme, or you can try to follow our guide for Heroku.

Do not forget to update your GitHub OAuth app URLs!

Go back to the OAuth settings on GitHub, and edit the URLs.

  • your "Application URL" is the Heroku app url, something like this
    https://HEROKU_APP_NAME.herokuapp.com/

  • the "Authorization callback URL" is the /oauth path on the app
    https://HEROKU_APP_NAME.herokuapp.com/oauth

Development

Clone the repo, install deps

$ npm i 

Create a .env file based on the .env.example in the repo. Obtain a development GH app credential set, using the setup above, but set your "Authorization callback URL" should be http://0.0.0.0:4000/oauth (or whatever port you wish to use locally)

Add your GH user to the ADMIN section.

Start the development environment:

$ npm run dev

Mock cfp data

To generate 200 cfp submissions into a csv file, just run the generator script:

$ node scripts/mock_cfp_export.js
Success! cfp-export_teal.csv written with 200 submitted CFPs
You can’t perform that action at this time.