We are all from Worcester College and have noticed problems with our current system for elections and referendums within the undergraduate student body. There is a distinct need for a system that can be used independently from the central student union, allowing college reps to customise the voting style and obtain results immediately after polls close. We decided to make a streamlined online tool to try and achieve this – using our site, students vote anonymously and may only vote once. This ensures that students are not influenced by peers' votes and college voting can be conducted democratically.
What it does
OxVote is a web tool designed for Oxford college student bodies (JCRs, MCRs), or really any student unions, to use for online elections and referenda. On the admin side, it allows college reps to input the elections and referenda relevant to be voted on, customising various things like the voting options, the descriptive text, what time voting should start and end, which system should be used to count votes, etc. Students in the college then use their personal login details to vote on any questions currently open for polling. The system is set up so that each student may only vote once.
How we built it
We used Django, and coding in a combination of Python, Jinja, HTML, and CSS.
Challenges we ran into
Django was new to all of us, so we had a steep learning curve in the beginning.
Accomplishments that we're proud of
The authentication system of the site, which only allows users to vote once on each question and shows them which questions they have and haven't voted on.
What we learned
Security is important! It's also important to prevent admins from tampering with the vote. But the main thing we learned is Django (and that the front end design is annoyingly hard to make pretty).
What's next for OxVote
The next step would be to implement a second vote-counting system that can be used for single-transferable-vote elections (where each candidate is given a preference score). We'd also want to improve the amount of information that can be displayed with each question, adding the ability to attach files and add rich text.
It would also be nice to separate the registration of a user from their eligibility to vote, and provide every user with a page showing their voter eligibility, their voting history, and giving options to change their password etc. In the long term, it would be ideal to integrate with the Oxford single sign on system so that Oxford students can use their existing logins (this would facilitate storing an accurate list of eligible voters).
Of course, we've only come up with very rudimentary CSS styling for now, so it would also be important to use an actual CSS framework to make the tool look professional and beautiful!