A cryptographically secure portal to manage online elections, originally created as a part of the Project Track for the course ESC101A. The version of the project presented for the Project Track is available in the project-track branch.
To set up the election portal, the following data is needed:
- A mongodb database with a collection called
students
, which contains the details of the students (the voters, candidates and CEO all should be present in this table). The following fields (of type string) must be present for each record in the collection:name
: The name of the studentroll
: The roll number of the studentemail
: The email of the student (without the @org.tld suffix). Eg: If the email of the student isdarshi@iitk.ac.in
then this field containsdarshi
.
- A YML file (
resources/electionData.yml
) containing the details of the posts for which the elections are being held. The following data is needed for each post:id
: An integer (should be unique for each post)name
: Name of the posthasNota
: Whether or not the post allows the voter to choose NOTAcandidates
: The roll numbers of the candidates contesting for this post
- The list of voters eligible to vote, for each post. This list should be in the form of line separated values, in a file named
<postID>.txt
and put in theresources/voters
directory. - Configuration values in
backend-config.yml
(note that this file needs to be updated both in the main repo and in the backend submodule). - Frontend arguments values in
docker-compose.yml
.
- Run
go run init-voters
. This will populate thevoters
andceo
collections. - Send authcodes to all the voters. (TODO: Add details)
- Run
go run initialize-database
. This will populate theposts
andcandidates
collections.
docker-compose up -d --build frontend
docker-compose up -d --build backend
This project is licensed under the MIT License - see the LICENSE file for details.