‹ All projects
2026 · Founder

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.

crcsn.com
CRCSN screenshot
CRCSN on mobile
2-6players: online, against bots or on one screen
3bot levels, from Novice to Strategist
4languages: EN, RU, ES, PT
SVGevery tile and figure is drawn by code, no image files

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

Open a link

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.

Set up the table

Pick expansions, give empty seats to bots and decide whether spectators can watch.

Play together

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.

Keep the game

A finished game keeps its own link: the final map, the scores and a move-by-move replay.

Under the hood

The server decides

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.

One link for two countries

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.

Voice and video without a media server

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.

Bots play against their past selves

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.

Smooth on a phone

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.

Strangers at the table

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

Built with

TypeScriptViteNode.js / wsPostgreSQLWebRTC / coturnSVGWeb AudioTelegram Mini AppDocker / Dokploy