← Back to projects

Real-Time Chat Platform

A WebSocket-based real-time chat application with rooms, typing indicators, and end-to-end encryption.

TypeScriptNode.jsWebSocketReact

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 ws WebSocket 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.