Inspiration

As lovers of democracy, we were very concerned with the state of election security and authenticity worldwide. We decided to make system which is secure and ensures that the will of the citizens is known.

What it does

ElectoClarity uses state-of-the-art cryptography in highly secure devices to ensure that voters' wishes cannot be tampered with, even over a medium like Internet voting. This creates confidence in the electoral system and convenience from having to wait in line at the polls. Compared to mathematically-based end-to-end voting protection systems, ElectoClarity is far more flexible on its ballot format; indeed, almost any set of questions and answers can be protected by ElectoClarity. Additionally, ElectoClarity is completely auditable; the election can be virtually re-run in a matter of days without anyone casting any more votes; however, ElectoClarity also protects the notion of a secret ballot, in that absent a large-scale recount, it is impossible to prove that a voter voted for a particular candidate. Because of its numerous advantages, ElectoClarity is well-positioned to supplant traditional paper ballot systems, which have neither security nor convenience.

How I built it

Peter worked fetching the card data from the card reader. He wrote the drivers to handle voter registration with the card reader. He also ensured that the votes submitted were protected by ECDSA. Kenneth worked on the frontend and the backend. He did this in HTML, CSS , JavaScript, NodeJS and AngularJS. He made use angular routing to move from page to page. More to that, he intergrated the election data visualisation using chartJs. He also built the backend logic for voter registration and vote counts.

Challenges I ran into

Getting the UI for the voter and election registration page to work took sometime. We had issues with mongoDB where the number of votes weren't getting implemented. The setTimeout function also gave us some trouble as it was delaying some api calls.

Accomplishments that I'm proud of

Writing a driver to read a card. Writing > 2000 lines of code in ~24 hours.

What I learned

We learned how to use chartJs. We learned what ECDSA is and how to use it. We learned to use Angular routing.

What's next for ElectoClarity

We are looking at making a fullscale working desktop version for registration of voters. We then want to create a mobile app that can read card data through a camera scan. With these two in place we will be looking at a mobile voting. Our sole aim is not only to ensure secure voting, but also to increase the voter turn out.

Built With

Share this project:

Updates