This project is a Real-Time Ranked-Choice Voting App that allows users to create polls, invite friends to participate, add nominations, cast their votes, and view the final results in real time.
- Real-time updates via WebSockets (Socket.IO)
- Ranked‑choice voting: voters select preferences and final tallies use Instant-Runoff logic.
- Backend: NestJS (TypeScript), REST APIs + WebSocket gateway.
- Frontend: React (TypeScript), responsive UI for voting and dynamic results.
- In‑memory vote storage: Redis‑JSON or Redis as backend store.
- Clean architecture: controllers, services, modules, repositories, gateways, guards, pipes, interceptors.
- Clone the repo
- Download Docker and Docker Compose
- Navigate to the project repo and run the following
# In root directory
npm install
docker-compose up
cd backend/ && npm install && cd ..
# Configure Redis connection settings in .env
cd frontend/ && npm install && cd ..
npm run server
npm run client
