Back in the early 2000s, Yahoo Chess was where a huge number of people learned to love online chess. You'd walk into a room, see a live list of tables, spot an open seat, and just play a stranger. No lessons pushed at you, no signup wall, no pressure.

When Yahoo killed its Games platform in 2016, that whole world vanished. And the modern chess sites — brilliant as they are — never brought back that specific casual, walk-in-and-play feeling.
So I decided to rebuild it. This is the story of ChessDada, and how I approached recreating a piece of internet history as a solo dev.
Why not just tell people to use the big sites?
Fair question. Chess.com and Lichess are excellent. If your goal is to improve, they're where you should be.
But they're built as training platforms — ladders, drills, deep analysis. Yahoo Chess was a coffee-house. The whole experience was social and low-stakes. That audience — the casual player who just wants a relaxed game — got left behind as chess platforms professionalised.
I kept meeting former Yahoo players online asking the same question: "Is there anywhere that feels like the old rooms?" The honest answer was no. So that became the spec.
The stack
Nothing exotic — the goal was reliability on a single VPS, not a distributed system.
Node.js + Express -> HTTP + routing
Socket.IO -> real-time moves, chat, presence
MySQL -> users, ratings, game history
PM2 -> process management
Nginx -> reverse proxy + static files
The whole thing runs on one DigitalOcean droplet. For a casual multiplayer chess site, that's plenty — the bottleneck is never CPU, it's liquidity (having two people online at the same time). More on that later.
Recreating "the room"
The single most important feature was the room + table model. Not matchmaking — rooms.
When you join a room, a Socket.IO channel streams the live state of every table: who's seated, their rating, and whether a seat is open. Click an open seat and you emit a sit event; the server validates it, seats you, and broadcasts the update to everyone in the room.
The tricky part was presence. A table where a player's socket has silently died should free that seat — otherwise the lobby fills with ghost tables and nobody can sit. Handling disconnects cleanly (dead-socket detection, reconnection windows, seat reclaiming) turned out to be most of the real engineering.
Colour-coded ratings
This is the detail Yahoo veterans remember most: your rating wasn't just a number, it was a colour. Purple for masters, down through red, orange, blue, green, and grey for provisional players.
It's trivial to implement — a function mapping Elo to a colour class — but it does something subtle: it makes rating social. You glance at the lobby and instantly read the room. I rebuilt that ladder exactly.
javascript
function ratingColor(elo) {
if (elo >= 2000) return 'master'; // purple
if (elo >= 1800) return 'expert'; // red
if (elo >= 1600) return 'advanced'; // orange
if (elo >= 1400) return 'intermediate'; // blue
if (elo >= 1200) return 'beginner'; // green
return 'provisional'; // grey
}
The hardest problem isn't technical
Here's the thing nobody tells you about reviving a social platform: the code is the easy part.
The real problem is the cold-start / liquidity problem. A chess site is only fun if someone's there to play. An empty lobby is a dead lobby — a visitor arrives, sees no one, and leaves. Every feature I build ultimately serves one goal: get two humans online at the same time and keep them playing.
Interestingly, when I dug into the database, the casual players are showing up — anonymous guests from all over the world, playing real games. Two strangers recently played three full games back-to-back over 40 minutes. The product works. The challenge is purely getting enough people overlapping in time.
If you've ever built anything social, you know this wall. It's humbling.
What I learned
Atmosphere beats features. Yahoo Chess was never technically impressive. It nailed the feeling. That's the actual product.
Presence/disconnect handling is where real-time multiplayer gets hard. Budget serious time for it.
Nostalgia is a real, underserved market. A surprising number of people don't want a chess bootcamp — they want 2005 back.
Liquidity is the final boss. No amount of clean code substitutes for two people online together.
Try it / roast it
It's live and free at chessdada.com — no signup needed to play. If you remember the Yahoo rooms, I'd love to know whether it captures the feeling. And if you're a dev, tear the real-time model apart in the comments — I'm still improving the reconnection logic.
Sometimes the best thing you can build isn't the most advanced one. It's the one that feels like pulling up a chair.
Top comments (0)