article

Why Tilehaus uses one TypeScript engine for web and mobile

Authoritative apply() for Tile Rummy table dumps and mahjong claims, reused by a WebSocket server and future iOS/Android clients.

Protocol

Clients send actions. Servers (or the local hook) apply them. Views hide foreign racks. That is the whole multiplayer model.