Skip to content

Latest commit

 

History

History
62 lines (43 loc) · 1.32 KB

File metadata and controls

62 lines (43 loc) · 1.32 KB

Click2Vote

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.

▶️ Watch the demo on YouTube


Framework Design

design



Technologies

Typescript | NestJs | Redis | Socket.io | Docker | ReactJs


Features

  • 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.


How to Run

  1. Clone the repo
  2. Download Docker and Docker Compose
  3. 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