How ajay7616/securevote works
SecureVote is a web-based election administration and voter-facing voting platform. Administrators configure elections, wards, candidates, and voter rolls; voters authenticate, cast a ward- and election-checked vote, and can access voting and results features. The backend persists election data in PostgreSQL/PostGIS and the vote controller also checks a blockchain contract. The README documents immutable on-chain voting and email/RSA security. Several routes and frontend service-to-page connections are unsampled, so uncertain links are omitted.
Main entry points: routes Domain routes · database.js Database pool · App.jsx Routed app · wardController.js Ward and voter intake
Components 26
Web application
- Routed app
frontend/src/App.jsx - Admin consoles
frontend/src/pages/Admin - Master admin
frontend/src/pages/MasterAdmin - Voter screens
frontend/src/pages/Voter - Auth client
frontend/src/services/authService.js - Candidate client
frontend/src/services/candidateService.js - Domain clients
frontend/src/services - API transport
frontend/src/config/api.js
API and domain
- HTTP server
backend/server.js - Auth routes
backend/routes/auth.js - Domain routes
backend/routes - Authentication
backend/controllers/authController.js - Election management
backend/controllers/electionController.js - Ward and voter intake
backend/controllers/wardController.js - Candidate management
backend/controllers/candidateController.js - Voter management
backend/controllers/voterController.js - Voting and results
backend/controllers/voteController.js - Issues and feedback
backend/controllers/issueController.js - Email delivery
backend/utils/emailService.js
Election records
- Database pool
backend/config/database.js - PostgreSQL/PostGIS
External services
- Ethereum contract
- SMTP email
- Nominatim
Other components
- Administrators
- Voters
Connections 31
- Administrators → Routed app: use console
- Voters → Routed app: use portal
- Routed app → Admin consoles: routes to
- Routed app → Master admin: routes to
- Routed app → Voter screens: routes to
- Auth client → API transport: sends requests
- Candidate client → API transport: sends requests
- Domain clients → API transport: sends requests
- API transport → HTTP server: calls API
- HTTP server → Auth routes: dispatches auth
- HTTP server → Domain routes: dispatches domains
- Auth routes → Authentication: dispatches
- Domain routes → Election management: dispatches
- Domain routes → Ward and voter intake: dispatches
- Domain routes → Candidate management: dispatches
- Domain routes → Voter management: dispatches
- Domain routes → Voting and results: dispatches
- Domain routes → Issues and feedback: dispatches
- Authentication → Database pool: queries
- Election management → Database pool: queries
- Ward and voter intake → Database pool: queries
- Candidate management → Database pool: queries
- Voter management → Database pool: queries
- Voting and results → Database pool: queries
- Issues and feedback → Database pool: queries
- Database pool → PostgreSQL/PostGIS: connects
- Voting and results → Ethereum contract: checks vote
- Authentication → Email delivery: sends OTP
- Ward and voter intake → Email delivery: sends login mail
- Email delivery → SMTP email: delivers mail
- Ward and voter intake → Nominatim: geocodes addresses