Electronic system to identify the person by fingerprint recognition and a counting system based on image recognition. A web app will display the results after voting ends and a mobile app is used to setup the election.
Anyone is able to access the web page where they can check the election schedule and candidates before the end of the voting. During the election it's possible to check in real time the number of people who have already voted, but not the vote's content. After the voting time, the result and statistics are displayed on the application.
The web server is built on NodeJS and Express and hosted at the Heroku cloud platform.
The administrator will have access to a mobile application in which they'll be able to set the candidates for the upcoming election, when it'll be held and for how long. In case a vote recount is needed he'll be able to change the ballot counter to recount mode using the app.
The app is built with Swift and will be available for iOS devices.
The project uses a MongoDB Wire Protocol, which is a socket-based request-response protocol, to communicate with the cloud-based database cluster stored in MongoDB Atlas. This cluster will communicate with the micro-controller as well as the Mobile App and Web App in order to save data as documents in JSON (JavaScript Object Notation) format.
In the database the voter name and authentication information are stored, their identifiers and the voting status. The candidates and election schedule are also stored in the database. After the voting ends the votes are uploaded to the database with each ballot identifier and vote content, in such a way there's no correlation between a voter and their vote.