This repository contains the frontend for BallotGo, a secure e-voting application built with React. This application is designed to provide a seamless, secure, and user-friendly voting experience while ensuring data integrity and vote verifiability.
- User Authentication and OTP Verification: Allows users to securely sign in and verify their identity with OTP.
- Candidate Selection and Vote Submission: Provides an intuitive UI for users to select candidates and submit votes.
- Real-Time Status Updates: Displays voting status and confirmation upon successful vote submission.
- Verification Screens: Supports individual verification for users to confirm their votes.
BallotGo’s frontend leverages React to create a dynamic, responsive voting interface. It works in conjunction with the backend’s cryptographic security measures to provide a private and transparent voting process. This client interface allows users to authenticate, vote, and verify their submissions securely.
-
JWT-Based Secure User Authentication
JSON Web Tokens (JWT) are used for secure user authentication and role-based management:- Token Storage: JWT is securely stored on the client side and used to validate the user’s session.
- Token Validation: Tokens are validated on restricted routes, ensuring only authorized users can access sensitive areas like voting screens.
-
OTP Verification for Identity Authentication
OTP verification is implemented to add an extra layer of security:- Dynamic OTP Requests: Users can request an OTP on login or vote submission, which is verified by the backend.
- Time-Limited Validity: OTPs are only valid for a short time, reducing the risk of unauthorized access.
-
Blind Signatures and Vote Anonymity
The frontend encrypts and submits votes, while blind signatures provided by the backend maintain vote anonymity and integrity.
BallotGo’s frontend works with backend cryptographic features to ensure privacy and transparency in the voting process:
-
End-to-End Encryption for Secure Data Transmission
All data, including votes and authentication details, are encrypted during transmission to maintain confidentiality. -
Individual and Universal Verifiability
Users can verify their vote inclusion, and third-party observers can verify the tally without accessing specific vote details.
- Node.js (v14 or above)
- Git (optional, for cloning the repo)
-
Clone the Repository
git clone https://github.com/username/ballotgo-frontend.git cd ballotgo-frontend
-
Install Dependencies
npm install
-
Run the Application
npm start