CRCSN
A tile-laying board game in the browser. Play with friends via a link, against bots or on one screen, with voice and video at the table. Nothing to install, no sign-up.


The problem
My friends and I used to get together for board game nights, then we moved to different countries. We still talk in Telegram, but playing together stopped. I wanted the table back: one link, friends' faces and voices, nothing to install.
What I did
Built it end to end with Claude Code: a rules engine with two expansions and a variant, bots at three levels, graphics drawn entirely in code and synthesized sounds. The game server runs rooms, spectators, chat, voice and video, and quick matches with strangers. There is also a Telegram Mini App and a site in four languages.
Result
In open beta at crcsn.com since October 2026: free and without ads, in English, Russian, Spanish and Portuguese, on a computer, on a phone and inside Telegram.
How it works for the user
No install, no sign-up: open the site or a friend's room link, type a name and take a seat. Or press "Find a game" to play with strangers.
Pick expansions, give empty seats to bots and decide whether spectators can watch.
Turn on the microphone and camera if you like: faces appear in the player cards. Text chat with quick reactions, the rules one tap away.
A finished game keeps its own link: the final map, the scores and a move-by-move replay.
Under the hood
One rules engine runs both on the server and in the browser. The client sends a move, the server checks it and sends back the result with a checksum of the state. Only the server knows the order of the deck. A security review found the deck seed leaking to clients, so I moved to a generator with 128 bits of state and a cryptographic seed.
The game server is in Germany. Players from Russia are sent by GeoIP to a mirror behind a relay in Russia, and if the WebSocket hangs for 8 seconds, the client switches to the mirror by itself. Rooms and links are the same for everyone.
Peer-to-peer WebRTC, with TURN servers in both regions and short-lived credentials. While your microphone and camera are off, traffic goes only through TURN, so other players never see your IP address.
A bot tries every placement of the tile and the figure and weighs points, unfinished features and the tiles still left in the deck. Each new version plays the previous one on the same decks: the improved Strategist won 59 of 78 two-player games.
Scrolling made the phone redraw the whole SVG map on every frame. Now, while you scroll, the map moves as a ready-made GPU layer and is redrawn once scrolling stops: rasterization time for a 2-second scroll fell from 494 to 17 ms.
Quick match seats you at a public table with the same expansions you picked. The game starts when everyone is ready. If a player takes longer than 120 seconds, a bot moves for them. A Telegram bot announces open tables in the community chat and updates the post as the game goes on.
Screens

