A secure, transparent, and decentralized platform for online elections—leveraging blockchain, modern web technologies, and robust authentication.
- Enable secure, transparent, and accessible online voting for organizations and communities.
- Ensure tamper-proof, auditable elections using blockchain (Polygon/Ethereum).
- Provide a modern, user-friendly experience for voters, admins, and election officers.
- Support real-time analytics, robust authentication, and scalable architecture.
apps/
frontend/ # Next.js (App Router) – user-facing web app
backend/ # NestJS – API, business logic, integrations
packages/
contracts/ # Solidity smart contracts, Hardhat, deployment scripts
database/ # Prisma schema, migrations, database utilities
- frontend/: Voter/admin portal, dashboards, ballot casting, results (Next.js, Tailwind, Shadcn UI, Clerk, wagmi, ethers.js)
- backend/: APIs, authentication, election logic, analytics, blockchain integration (NestJS, Prisma, Redis, Clerk)
- contracts/: Ethereum/Polygon smart contracts for elections and ballots (Solidity, Hardhat, TypeChain)
- database/: Prisma schema, migrations, DB utilities (PostgreSQL)
- Frontend: Next.js (TypeScript), Tailwind CSS, Shadcn UI, Clerk, wagmi, ethers.js, TanStack Query
- Backend: NestJS (TypeScript), Prisma ORM, Clerk, Redis, ethers.js
- Blockchain: Solidity, Hardhat, TypeChain, Ethers.js, Polygon/Ethereum
- Database: PostgreSQL (via Prisma)
- Auth: Clerk (multi-role: voter, admin, election_officer)
- Dev Tools: ESLint, Prettier, pnpm, Docker Compose
git clone https://github.com/jhenbertgit/online-voting-system.git
cd online-voting-system
pnpm install- Copy
.env.examplefiles in each package/app to.envand fill in required values (see individual READMEs for details).
- Run Prisma migrations:
pnpm --filter database exec prisma migrate dev - Compile contracts:
pnpm --filter contracts hardhat compile
- Frontend:
pnpm --filter frontend dev - Backend:
pnpm --filter backend start:dev
- See individual READMEs in
apps/frontend,apps/backend,packages/contracts, andpackages/databasefor detailed onboarding, scripts, and architecture.
For questions about architecture or onboarding, please contact project maintainers or consult the /docs folder if available.
apps/frontend– Next.js frontendapps/backend– Nest.js backend APIpackages/contracts– Smart contracts (Solidity/Polygon)packages/database– Prisma schema and migrationspackages/utils– Shared utilities
For setup and contribution guidelines, see the respective README.md files in each package/app.