Skip to content
Arunish Rajput@arunishrajput

Systems & interfaces

AR Chat App

Real-time chat over Socket.IO, with the small details that make a room feel alive.

Live2024Solo build
Node.jsSocket.IOJavaScriptHTMLCSS

TRANSPORT

WebSocket



The problem

The first time you build something real-time, the interesting part isn't sending a message — it's everything that makes a room feel occupied rather than empty.


What I built

A Node.js and Socket.IO chat server with a browser client: rooms, live message delivery, join and leave events, and a typing indicator.


How it works

The typing indicator is the piece worth talking about. It is a separate event stream from messages, debounced on the client and expired on a timer server-side — because the failure mode is someone who starts typing, closes the tab, and leaves a ghost "is typing…" on everyone's screen forever. Expiry has to be the server's job.

Configuration is environment-driven so no credentials sit in the repo.


What I'd do differently

Messages exist only in memory, so a server restart erases the room. That was deliberate at the time and it is the first thing I would change now — even a small persisted history changes what the app is for.