• Stars
    star
    433
  • Rank 100,464 (Top 2 %)
  • Language
    Python
  • License
    GNU Affero Genera...
  • Created over 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A project expo judging system ๐Ÿ“Š

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

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. This is sufficient if you want to serve Gavel under its own domain (e.g. judging.example.com). If you are serving Gavel under a subpath, e.g. example.com/judging, you need to set the SCRIPT_NAME environment variable (e.g. by passing -e SCRIPT_NAME=/judging to Gunicorn). If you are running Gavel behind a proxy server, be sure to set PROXY=true in Gavel's settings.

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}},
}

License

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

More Repositories

1

dotbot

A tool that bootstraps your dotfiles โšก๏ธ
Python
7,030
star
2

neural-style

Neural style in TensorFlow! ๐ŸŽจ
Python
5,539
star
3

git-remote-dropbox

A transparent bridge between Git and Dropbox - use a Dropbox (shared) folder as a Git remote! ๐ŸŽ
Python
3,055
star
4

lumen

Magic auto brightness based on screen contents ๐Ÿ’ก
Objective-C
2,286
star
5

gemini

Gemini is a modern LaTex beamerposter theme ๐Ÿ–ผ
TeX
982
star
6

porcupine

A fast linearizability checker written in Go ๐Ÿ”Ž
Go
883
star
7

obfuscated-gradients

Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples
Jupyter Notebook
881
star
8

seashells

The official client for seashells.io ๐Ÿš
Python
707
star
9

dotfiles

~anish โ€ข powered by https://github.com/anishathalye/dotbot ๐Ÿ’พ
Shell
704
star
10

neural-hash-collider

Preimage attack against NeuralHash ๐Ÿ’ฃ
Python
664
star
11

periscope

Periscope gives you "duplicate vision" to help you organize and de-duplicate your files without losing data ๐Ÿ”ญ
Go
379
star
12

auriga

Auriga is a minimalist LaTeX beamer presentation theme ๐Ÿ“ฝ
TeX
328
star
13

offix

"Who is in the office?" ๐Ÿ‘€
JavaScript
186
star
14

dotfiles_template

A template for structuring dotfiles (using Dotbot as an installer) ๐Ÿ“œ
PowerShell
184
star
15

ribosome

Synthesize photos from PhotoDNA using machine learning ๐ŸŒฑ
Python
141
star
16

imagenet-simple-labels

Simpler human-readable labels for ImageNet ๐Ÿท
122
star
17

dotfiles-local

~anish [local config] โ€ขย powered by https://github.com/anishathalye/dotbot ๐Ÿ 
Shell
75
star
18

mathematics-of-deep-learning

The Mathematics of Deep Learning, SIPB IAP 2018
Jupyter Notebook
74
star
19

proof-html

A GitHub Action to validate HTML, check links, and more โœ…
Ruby
57
star
20

seashells-server

The seashells.io server ๐Ÿš
Go
53
star
21

knox

A framework for formally verifying hardware security modules to be free of hardware, software, and timing side-channel vulnerabilities ๐Ÿ”
Racket
29
star
22

notary

Notary: A Device for Secure Transaction Approval ๐Ÿ“Ÿ
Verilog
28
star
23

hubot-group

A hubot script that expands mentions of groups ๐Ÿ‘ซ
CoffeeScript
26
star
24

synox

Rust library for program synthesis of string transformations from input-output examples ๐Ÿ”ฎ
Rust
26
star
25

knox-hsm

Circuits and hardware security modules formally verified with Knox ๐Ÿ”
Verilog
23
star
26

disposable

Create a Reddit throwaway account with the click of a button! ๐Ÿšฎ
JavaScript
23
star
27

skipchat

SkipChat - MHacks V
C
20
star
28

rtlv

Tools for reasoning about circuits in Rosette/Racket ๐Ÿ”Œ
Racket
18
star
29

micro-wwvb

A tiny WWVB station ๐Ÿ“ก
C
17
star
30

linux-bootstrap

get a debian-based system set up the way I like it, with minimal effort on my part
17
star
31

hubot-shortcut

A macro system for hubot ๐Ÿ’จ
JavaScript
16
star
32

bin2coe

A tool to convert binary files to COE files ๐Ÿ’ซ
Python
14
star
33

anishathalye

A self-updating GitHub profile ๐Ÿฏ
Python
12
star
34

hubot-conf

A simple configuration management system for hubot ๐Ÿ”ง
JavaScript
11
star
35

gitlive

the source code that powered gitlive.net
Java
11
star
36

chroniton

A tool for formally verifying constant-time software against hardware ๐Ÿ•ฐ๏ธ
Racket
10
star
37

unblock

A tiny utility to make shell pipes behave as if they have unlimited buffering โ™พ
Go
7
star
38

countdown

A simple countdown timer you can set as your homepage โฐ
HTML
5
star
39

coqioa

A formalization of IO automata in the Coq proof assistant
Coq
5
star
40

x

playground for testing stuff on github
4
star
41

assets

README assets for my GitHub projects ๐ŸŽญ
4
star
42

easy-security

Slides from the SIPB Cluedump on Low Effort High Impact Security
HTML
3
star
43

learn-pgp

Slides from the SIPB Cluedump on PGP
HTML
3
star
44

learn-git

An introduction to using Git - prepared for HackMIT / Hack Week 2015
HTML
2
star
45

deterministic-start-benchmark

Verilog
2
star
46

ipr

A formalization of information-preserving refinement (IPR) in the Coq Proof Assistant ๐Ÿงฉ
Coq
2
star
47

xclips

Rust
1
star
48

scripts

Python
1
star
49

formal-methods-tutorial-2022-10-11

Racket
1
star