A modern, full-stack web platform to organize and participate in secure digital elections. Built with React + TypeScript on the frontend and Node.js/Express + MongoDB on the backend, it offers role-based access, real-time vote updates, and seamless admin control.
-
🔐 JWT authentication using HTTP-only cookies
-
🧑⚖️ Admin panel to manage elections & candidates
-
🗳️ Voters can cast one secure vote per election
-
📊 Real-time voting results
-
☁️ Cloudinary for image uploads
-
🛡️ Role-Based Access Control (RBAC)
-
💡 Clean, responsive UI using modern React stack
This application is built with a strong focus on modern web standards, ensuring an exceptional experience across devices and platforms:
- Fully compliant with WCAG guidelines using semantic HTML, ARIA labels, and keyboard navigability.
Follows secure coding practices including:
- HTTP-only cookies for authentication
- Role-based access control (RBAC)
- File upload sanitization
- Avoidance of localStorage for sensitive data
Optimized for speed with:
- Lazy loading images
- srcSet & sizes for responsive image delivery
- Code-splitting, fast FCP/LCP scores
- CDN-powered assets via Cloudinary
<img
loading="lazy"
src={cloudinaryService.getOptimizedImageUrl(thumbnail, height, width)}
alt={title}
srcSet={`
${cloudinaryService.getOptimizedImageUrl(thumbnail, height, width)} ${width}w,
${cloudinaryService.getOptimizedImageUrl(thumbnail, height, mobileWidth)} ${mobileWidth}w
`}
sizes={`(max-width: 600px) ${mobileWidth}px, ${width}px`}
/>
- Follows all major SEO best practices like descriptive metadata, semantic tags, alt texts, and more.
- Score deductions (if any) are due to third-party scripts loaded by Chrome DevTools, not actual implementation issues.
Note: Best Practices score is slightly affected by a third-party script loaded by Chrome DevTools.
- client - React frontend
- server - Node.js + Express backend
README.md- Root-level overview (this file)Screenshots- folder containing app screenshots
Each subdirectory (client and server) has its own detailed README.md file.
Please visit them to explore:
- 🔍 Project-specific setup instructions
- 🧠 Code architecture decisions
- 🛡️ Technologies and tools used
- 🛠️ Feature implementation details
- React (TypeScript)
- Redux Toolkit
- Axios
- Vanilla CSS (Custom styles without CSS frameworks)
- React Hook Form + Yup
- React Router DOM
-
Node.js + Express
-
MongoDB + Mongoose
-
JWT Auth with HTTP-only cookies
-
Cloudinary (image hosting)
-
Class-validator & class-transformer
-
ESLint + Prettier
-
ESLint, Prettier, Husky, lint-staged
-
Nodemon + ts-node-dev for local dev
-
VS Code recommended settings
- git clone https://github.com/muwal-jitender/election-voting-application.git
- cd election-voting-app
- npm install
- cd client && npm install
- cd server && npm install
- client/.env – React environment variables
- server/.env – MongoDB URI, JWT secret, Cloudinary keys, etc. (Please check ".env.sample" to know all the required keys)
- cd client
- npm run dev
- cd server
- npm run dev










