I wanted a place to play the board games I grew up with — Ludo, Carrom, Snakes & Ladders — with friends, without everyone installing yet another app. So I built one: Diceonaut.
It's a free, browser-based portal for classic board and skill games. No download, no install, no sign-up to start.
What's in it
-
Ludo — the classic 4-player race, online
-
Carrom — flick, pot, win, with real board physics
-
9-Ball Pool — turn-by-turn pool with a proper physics engine
- Quoridor — race across the board while walling your opponent off
- Connect 4, Gomoku, Snakes & Ladders, Tic-Tac-Toe, Duel Deck
Every game runs three ways: online against real players, against AI, or pass-and-play on a single device. You can challenge a friend with a private-room link, climb per-game and global leaderboards, and earn a shared currency across every game.
The tech (briefly)
- Backend: Go, with authoritative match state held in memory (goroutine-per-match) — the server is the source of truth for every roll and move, so online play can't be cheated.
- Frontend: React for the portal/lobby (SEO-friendly, prerendered) + Phaser for each game canvas.
- Realtime: a message-bus transport with a binary fast path for the hot loop.
- Infra: self-hosted on a single box (Podman), fronted by Nginx + Cloudflare.
Server-authoritative dice were the fun part — the roll is generated and validated server-side, broadcast to every client, so there's no trusting the browser.
Try it
It's live and free: diceonaut.com. Feedback very welcome — especially on the physics games.
Top comments (1)
How did you handle real-time updates and latency in the browser, was it using WebSockets or WebRTC? I'd love to swap ideas on this, following for more content on multiplayer dev.