Real-time Team Chat
Slack-style workspace with video calls & file sharing
Full Stack
4 months
Solo project
Production Platform
The Problem
Remote teams needed a lightweight alternative to Slack that self-hosts and includes video without a Zoom subscription.
Impact & Results
Delivered a self-hosted messenger supporting 100+ users per workspace with WebRTC video and encrypted file transfer.
System & Product Architecture
A self-hosted team messenger built as a lightweight Slack alternative: channels, threads, direct messages, emoji reactions, file sharing, and one-click video calls — all deployable on a single VPS with Docker Compose. Built to prove out an end-to-end real-time architecture, from optimistic UI updates to WebRTC signaling.
Key Engineered Features
Channels, threads, DMs, mentions, and emoji reactions
One-click WebRTC video calls inside any channel
Encrypted file transfer with drag-and-drop upload
Full-text message search across a workspace
Single-command Docker Compose deployment
Edge Cases & Hard Technical Problems
Complex scenarios solved through careful concurrency control, schema modeling, and fault-tolerant system design.
Message ordering during reconnection storms — optimistic messages are reconciled against server sequence numbers so no message duplicates or vanishes
Typing indicators and presence for users connected from multiple devices at once
Large file uploads over flaky connections, handled with chunked, resumable uploads
WebRTC negotiation behind symmetric NATs, falling back to a TURN relay when direct peering fails
Technologies & Infrastructure
- React + TypeScript with Zustand for client state
- Node.js + Socket.io message gateway
- MongoDB for message history, Redis for presence
- VideoSDK/WebRTC with coturn as the TURN server
- Docker Compose for self-hosted deployment