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