Real-Time Chat Platform
A WebSocket-based real-time chat application with rooms, typing indicators, and end-to-end encryption.
Real-Time Chat Platform
A modern real-time chat application built with WebSockets, supporting multiple rooms, typing indicators, and optional end-to-end encryption.
Features
- Instant messaging — Messages delivered in under 50ms
- Chat rooms — Create public or private rooms with invite links
- Typing indicators — See when others are composing messages
- End-to-end encryption — Optional E2EE using the Signal Protocol
- Message history — Paginated history with full-text search
Tech Stack
- Frontend: React with TypeScript and a custom design system
- Backend: Node.js with the
wsWebSocket library - Database: PostgreSQL for persistence, Redis for pub/sub
- Encryption: libsignal-protocol-javascript
Challenges
The biggest challenge was implementing reliable message ordering across distributed WebSocket connections. I solved this using vector clocks and a conflict resolution strategy inspired by CRDTs.
What I Learned
This project taught me the nuances of real-time systems — connection management, reconnection strategies, and the importance of optimistic UI updates for perceived performance.