DEV Community

Cover image for Chess Doesn’t Need Another Engine. It Needs Eye Contact
siyahtonu
siyahtonu

Posted on

Chess Doesn’t Need Another Engine. It Needs Eye Contact

About 900 million people know how to play chess, and almost none of them have ever watched their opponent panic. We spent twenty years digitizing the board and quietly threw away the person sitting behind it.

So I put the person back. I built Rovian: real-time chess with video on both sides. Two boards, two faces, one very uncomfortable silence after you hang your queen.

I built it alone. It's in open beta. Here's the technical part, and the embarrassing part.

The bug nobody filed

Online chess is a solved engineering problem. Lichess is a genuinely beautiful piece of open source work. Chess.com is a machine that prints money and puzzles. Neither of them is broken.

But think about what you actually get when you press "Play." You get a rating, a username, and total silence. Your opponent is a string of characters who either resigns or doesn't. There is no flinch. No sigh. No guy across the table saying "are you sure about that" while you hover over a piece.

Where I'm from we have a word for the place chess actually lived: kahvehane. The coffee house. Old men, cheap tea, terrible opening theory, and a crowd of five people telling you your move is stupid. That's not nostalgia, that's the actual product. The board was never the point. The board was the excuse.

Every chess app kept the excuse and deleted the point.

What Rovian is

Two players. One board. Both webcams on. You see the exact moment your opponent realizes the knight fork was there the whole time.

That's it. That's the feature. Everything else is plumbing.

The stack

For the people who scrolled here first:

Frontend: Next.js. Chess logic in chess.js, board rendering custom

Post-game analysis: Stockfish compiled to WASM, running client-side. Your browser does the thinking, my server bill stays alive. A solo dev cannot afford server-side engine analysis, and it turns out you don't need to.
Puzzles: Lichess's CC0 puzzle database, rated with Glicko-2. Standing on the shoulders of people who gave their work away for free.

Nothing exotic. The interesting decisions were all about what not to build.

Three things that broke

  1. Video and game state disagree about time

WebRTC video is peer-to-peer and fast. Game state goes through the server and is authoritative. Those are two different clocks.

The result: your opponent's face reacts to a move roughly a beat before your board renders it. For half a second, you're watching someone laugh at a joke you haven't heard yet. Fixing this is not a "fix," it's a permanent negotiation between latency budgets. I buffer the board render slightly rather than delay video, because a laggy face reads as broken and a 120ms board delay reads as normal.

  1. The empty room problem

Here is the part where a normal launch post would say "growing community" and move on.

Rovian is in open beta. If you log in at 4 AM on a Tuesday, there is nobody there. So there are training bots that fill empty matchmaking slots.

They are labeled as training bots. I'm not going to run a fake-crowd theater to make a beta look busy, because the entire pitch of this product is that there's a real human on the other end. Lying about that would be a self-inflicted headshot.

If you want humans, come at 21:00 Istanbul time. That's when the room is actually full.

  1. I am one person

I don't write most of my code by hand anymore. I direct it. Claude Code, VS Code, a lot of very specific prompts and a lot of ruthless deleting. People have opinions about this. My opinion is that a solo founder who ships a working real-time video chess platform in months instead of years has won the argument by walking.

The skill didn't disappear, it moved. It's now in knowing which of the four generated approaches is the one that won't collapse under 200 concurrent connections.

The design rule

One rule for the whole UI: it must not look like it was made by an AI in 2026.

No purple gradient. No glassmorphism card floating over a blurred blob. No "Elevate Your Game" hero headline in Inter Bold with 40% opacity.

What I'm actually asking

Not for signups. For a fight.

If you play chess and you've never seen the other guy's face while doing it, go find out what that's like. If you're a developer, go break the WebRTC layer and tell me how. Both are useful to me.

rovian.co — open beta, free, no app to install.

Bring your face.

Top comments (0)