VoteSecure is a state-of-the-art online voting platform designed with transparency, security, and integrity at its core. By leveraging Blockchain Technology, the system ensures that every vote is immutable, verifiable, and tamper-proof.
- Decentralized Ledger: Each vote is recorded as a block in a cryptographic chain, making it impossible to alter or remove after submission.
- Multi-Election Support: Participate in various elections independently (e.g., Student Union, Innovation Awards).
- One Voter, One Vote: Cryptographic constraints ensure that each voter can only cast a single vote per election.
- Real-Time Analytics: Dashboards provide live results directly from the blockchain database.
- Audit Logs: A public-facing blockchain explorer allows any user to verify the audit trail of an election.
- Admin Control: Comprehensive admin panel to manage elections, candidates, and system status.
- Backend: ExpressJS (Node.js)
- Frontend Engine: EJS (Embedded JavaScript)
- Styling: Tailwind CSS (CDN-based for agility)
- Database: SQLite3 (Permanent relational storage)
- Encryption: Crypto-JS (SHA-256 Hashing) & BcryptJS (Password Security)
- Icons: FontAwesome 6
Install dependencies:
npm installInitialize the project with an admin user:
node seed.jsAdmin Credentials:
- Email:
admin@votesecure.com- Password:
Admin@Password123
Start the server:
npm startThe application will be live at http://localhost:3000.
Detailed documentation can be found in the /documentation folder:
- Architecture & Blockchain Logic — Dive into the cryptographic chaining and database schema.
- Setup & Deployment — Step-by-step instructions for local and production environments.
- Feature Breakdown — Every functional detail from Voter Registration to Audit Logs.
/app.js— Main Express server & Routing logic./blockchain.js— Core Blockchain engine & Hashing./db.js— Database connection & Table initialization./seed.js— Initial admin account seeding./views/— EJS Page templates./views/partials/— Reusable Header/Footer components./documentation/— Comprehensive technical documentation.
All votes are cryptographically linked using SHA-256. A voter's identity is anonymized in public logs (e.g., ***1234) to maintain privacy while ensuring the transaction is part of a verified, unbroken chain.