A Python Django app to permit secretish balloting for somewhat anonymised users (not completely secret nor anonymous as the app owner can see the database).
The app can control one or more ballots as required.
Administration is all done via the admin dashboard, at the /admin endpoint. Login details are set as environment variables, as per the Deployment section.
Voters for each ballot are sent an email containing a unique URL (which includes an 8 digit randomly created numerical value) at which they can cast their vote. Voters can cast their vote more than once but only the most recent vote is recorded.
A unique URL (which includes an 8 digit randomly created numerical value) is generated for each ballot which shows the current results of the ballot.
Some environment variables need to be set - see the .env.example file for details. The dotenv module is included so a .env file can be placed in the root directory with the necessary environment variables.
The project is setup to use a sqlite database. This can however be modified in the Django settings as desired.
The app is built into a Docker container, which may be the easiest way to deploy it. See this Gitlab container registry.
Read The Docs documentation is being written - this readme will be updated to point to it when it is available.
This project was developed over the course of a a few weeks to meet a specific need and could certainly be improved in many ways.
I consider myself a competent Python developer but there are always new things to learn and practices to improve on. In particular I am in no way a Django or testing expert. I welcome contributions as pull requests, issues or comments.
This project is licensed under the MIT license.