A web application that allows users to place votes by ranking several options. Once votes are placed, the selection algorithm is highly configurable. Written in Python 3 (using Flask and SQLAlchemy) and JavaScript (using Sortable). Authentication is done via LDAP. voting system that makes use of a basic scoring (voting) method to select a restaurant to order lunch from or a game to play (or any number of other things). Can also send reminders and results via Slack messages.
- flask
- flask-login
- flask-wtf
- flask-sqlalchemy
- sqlalchemy
- ldap3
- numpy
- Sortable
- slackutils (optional, for notifications via Slack)
You'll need a copy of Sortable in Vote's vote/static/sortable
. I'd recommend cloning the repository to the location of your choice and then creating a symbolic link to it.
For example, if you have Vote installed to ~/Development/vote/
and you want to install Sortable to ~/Development/Sortable/
:
git clone git@github.com:RubaXa/Sortable.git ~/Development/Sortable
ln -s ~/Development/Sortable ~/Development/vote/vote/static/sortable
You'll also need to create a config.py
file, which specifies details such as which method to use to select winning votes (instant runoff, Condorcet, etc.), how many winners to select, how to post notifications of the winners, etc. A sample configuration file can be found at sample_config.py
.
Before starting the server for the first time, run db_create.py
.
Start the server with run.py
. By default it will be accessible at localhost:9999
. To make the server world-accessible or for other options, see run.py -h
.
- Import/export of ballots/voting preferences (CSV or whatever).
- Ability to ignore selections from last time, this time.
- The "Remember Me" option on the login page doesn't seem to work anymore.
Vote was based on the earlier Lunch Voter. The weighted_sample
selection function was designed by Eric Davies. Curtis Vogt did quite a bit of work on the front end.
Written by Gem Newman. GitHub | Blog | Twitter
This work is licensed under Creative Commons BY-NC-SA 3.0.
This work makes use of Sortable by Lebedev Konstantin for ranking, licensed under the MIT License.
Fork-and-knife icon by Freepik from Flaticon, licensed under Creative Commons BY 3.0.
Remember: GitHub is not my CV.