MicuPoker Documentation

Play-money Texas Hold'em over Phoenix real-time channels

MicuPoker is an educational multiplayer poker demo. Chips are virtual demo chips only, have no real-world value, and cannot be bought, sold, deposited, withdrawn, paid out, cashed out, or converted to money or crypto.

What v1 Does

Guests receive a server-side demo account, create or join rooms, sit at a table, chat, receive private cards, act in turn, and finish hands in real time. WebSocket connections are tracked separately from seat reservation so reconnects and multiple tabs behave predictably.

Table Creation

Rooms validate name, max seats from 2 to the configured limit, starting virtual chips, blinds, and spectator mode. Default values come from the server environment, and the big blind must fit inside the starting stack. If a full room has spectators disabled, late LiveView, controller, and Channel joins are rejected. Password-protected rooms are intentionally disabled in v1 until full access control is implemented.

Poker Actions

The server validates fold, check, call, bet, raise, and all-in. Turn order, deck, cards, stack changes, main pots, side pots, and winners are server-authoritative. Sanitized table state exposes internal user IDs only to the current viewer. The UI shows real card faces, suit symbols, own-hand strength, board texture, and best five cards when available.

WebSocket Events

Endpoint: /socket. Topic: table:<room_id>. Use the signed socket-token meta value as ?token=...; raw user_id parameters are rejected. Events: state, action, and chat. Phoenix LiveView also uses /live.

API Routes

GET /health, GET /api/rooms, GET /api/rooms/:id, GET /api/stats. Browser routes include /, /lobby, /rooms/:id, and /docs.

Limitations

Persistent private hole-card history is not exposed by public APIs. v1 uses guest sessions rather than full username/password accounts.