Skip to content

ComprosoftCEO/TruBallot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSCI-495 Capstone Project

Electronic Voting Protocol

TruBallot Logo


Directory Layout

The code is laid out as a monorepo with the following subdirectories:

See the README.md file in each subdirectory for directions on compiling and running the code.


System Architecture

System Architecture Diagram

  • API Server - REST server that manages various website details such as user accounts, election details, registrations, etc.
  • Collector Mediator - Facilitates WebSocket communication between the different collectors
  • Collectors - Verifies the ballots, uses WebSocket messages for communication
  • Notification Server - Pushes real-time updates to the frontend using WebSocket messages
  • Frontend Client - Single-page application running in the browser

Authentication and authorization is handled using JSON Web Tokens. The API server, mediator, and collectors connect to PostgreSQL Databases for storage. NGINX is used as a gateway between the backend services and the frontend. NGINX also communicates with the mediator to proxy a collector UUID directly to the service (dotted line). See the frontend README.md file for details on properly configuring NGINX.


Credits

The TruBallot frontend, backend, collectors, and notification server have been programmed by Bryan McClain for his senior capstone project. The voting protocol comes from a 2017 Paper by Zou et al. Bryan worked with Dr. Zou (capstone advisor) during this project to ensure the math was implemented correctly. The TruBallot icon and logo were designed by Nathan McClain.