GithubHelp home page GithubHelp logo

chris-hvse / gavel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from anishathalye/gavel

0.0 3.0 0.0 1.47 MB

A project expo judging system :bar_chart:

Home Page: http://www.anishathalye.com/2016/09/19/gavel-an-expo-judging-system/

License: GNU Affero General Public License v3.0

Python 63.77% CSS 7.36% HTML 28.87%

gavel's Introduction

Gavel banner

Gavel is a project expo judging system.

Gavel was originally built for HackMIT and first used at HackMIT 2015. It has been used by dozens of other events since then.

If you use Gavel for your event, please add yourself to this list! It only takes a minute, and knowing that Gavel is helping real events helps keep us going <3

Join the chat at https://gitter.im/anishathalye/gavel

Demo

Gavel screenshot

See the demo video here!

Users

See here for a list of events that have used Gavel in the past.

If you use Gavel for your event, please add yourself to the list! It only takes a minute, and knowing that Gavel is helping real events helps keep us going <3

and adding yourself to the list helps keep me motivated to continue working on the software :)

Design

Gavel is based on the method of pairwise comparisons. Before you use Gavel, it's highly recommended that you read about the philosophy behind the implementation as well as hints on how to use it in practice. Read this blog post first, and then read this blog post.

Status

Gavel is stable software. We've used it successfully at HackMIT, and a bunch of other hackathons and events have used it too.

Gavel is a pretty different way of doing judging. If you want to use this for your hackathon or event, we highly recommend that you:

  • Deploy it and play around with it ahead of time to get a feel for how the system works
  • Read the blog posts linked above to get an idea of how to structure the judging process

If you have any questions, feel free to email me.

If you're able to contribute to making Gavel better, that would be awesome! We'd really appreciate any kind of input, especially pull requests.

Deployment

Deploy

The latest stable version is the master branch (and it's signed and tagged). Development happens in the develop branch.

The web application is written in Python 3 using Flask. It also uses NumPy and SciPy for math stuff. Doing a pip --no-cache-dir install -r requirements.txt should install all the dependencies.

The application uses Postgres for the database, so you need to have that on your server. You need to create a database, which you can do with createdb gavel (unless you're using a different database name). Before you use the app, you need to initialize the database by running python initialize.py. Note that Gavel does not preserve database schema compatibility between versions.

In order to send emails, you'll need to install Redis.

When testing, you can run the app with python runserver.py. In production, you should use something like Gunicorn to serve this. You can run the app with gunicorn -b :<PORT> -w <number of workers> gavel:app.

For sending emails, you'll also need to start a celery worker with celery -A gavel:celery worker.

Configuration

Before starting the app, copy config.template.yaml to config.yaml and set all the required settings (the ones that don't have default values).

Most settings can either be set in config.yaml or set as environment variables. There's more detailed documentation in config.template.yaml.

If you don't want to use the config file and use only environment variables, set the environment variable IGNORE_CONFIG_FILE=true.

Troubleshooting

See the troubleshooting guide in the Gavel wiki.

Use

To set up the system, use the admin interface on /admin. Log in with the username admin and the password you set. Once you're logged in, you can input information for all the projects and judges.

As you add judges, they'll automatically get emails with invitation links. After that, the judging and ranking process is fully automated - the judge will be able to read the welcome text, and then they'll be able to start judging.

The admin panel will rank projects in real time, ordered by their inferred quality (Mu).

Admin Panel Features

  • If you want to (temporarily) close the judging system, click the "Close" button under "Global Settings"
  • If you need to force re-send the invite email, use the "Email" button for the judge in the admin panel
  • If you need to manually give a judge a login link, direct them to /login/<secret>
  • If you want to send the next available judge to a certain project, use the "Prioritize" button
  • If you need to deactivate projects or judges at any point, use the "Disable" button
  • If a project hasn't been judged yet, you can delete it using the "Delete" button
  • If a judge hasn't started yet, you can delete them using the "Delete" button
  • If you need to see details for a project or judge, click on the item ID in the admin panel
    • If you need to edit a project (name, location, or description), you can do so on the item detail page
  • If you want to sort the items in the admin panel, click on the table headers

Development

Interested in hacking on Gavel? Awesome. See DEVELOPMENT.md for a dev setup guide.

Notes

If you do end up using this for your competition or hackathon, I would love to hear about how it goes.

If anyone has questions, feel free to email Anish ([email protected]).

Contributing

Do you have a feature request, bug report, or patch? Great! See CONTRIBUTING.md for information on what you can do about that.

Citation

If you use Gavel in any way in academic work, please cite the following:

@misc{athalye2016gavel,
  author = {Anish Athalye},
  title = {Gavel},
  year = {2016},
  howpublished = {\url{https://github.com/anishathalye/gavel}},
  note = {commit xxxxxxx}
}

License

Copyright (c) 2015-2019 Anish Athalye. Released under AGPLv3. See LICENSE.txt for details.

gavel's People

Contributors

anishathalye avatar rjchee avatar phoenix1796 avatar axnsan12 avatar dalemitchell avatar evantey14 avatar jhollowe avatar joshuamorton avatar michaelsilver avatar revalo avatar copperstick6 avatar

Watchers

James Cloos avatar Kristóf Havasi avatar  avatar

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.