Real-time polling app
intermediate3 weeksNode.jsReactTypeScript
Create a poll, share a link, and watch votes update live for everyone in the room.
Why build it
WebSockets, shared state and abuse prevention in a product small enough to understand fully.
Features
- Create a poll with 2 to 8 options
- Shareable link
- Live vote counts over WebSockets
- One vote per browser
- Poll closes automatically
Roadmap
- p1
Server
- Express or Fastify server with a poll store
- REST endpoints to create and read polls
- Validate all input with zod
- p2
Realtime
- Add WebSocket rooms per poll
- Broadcast vote changes
- Reconnect with backoff on the client
- p3
Fair voting
- Enforce one vote per browser with a cookie token
- Rate limit votes per IP
- Explain the limits honestly in the UI
- p4
Ship
- Persist polls to Postgres or SQLite
- Load test with 200 simulated clients
- Deploy to a host that supports WebSockets
Common pitfalls
- Trusting vote counts sent by the client
- Choosing a serverless host that cannot hold WebSocket connections
Skills you will practise
- WebSockets
- Input validation
- Rate limiting
- Load testing