Blackjack

June 14, 2026 · View on GitHub

Multiplayer Blackjack — domain core, WebSocket server, TUI client.

Demo

Architecture

blackjack/
├── core/      # Pure domain logic (no I/O) — game engine, rules, events
├── server/    # Axum HTTP + WebSocket server — auth, wallet, session
└── cli/       # Ratatui TUI client

Stack: Rust · Axum · Tokio · Ratatui · WebSockets

Quick Start

Local

# Terminal 1 — server
cargo run -p server

# Terminal 2 — client
cargo run -p cli

Against hosted server

SERVER_URL=https://blackjack.skh.rs cargo run -p cli

Accounts

Enter any username + password on the login screen — the account is auto-created on first login. Same credentials on subsequent logins authenticate you.

Pre-seeded accounts: admin, qa, dev — all with password famly1234.

Gameplay

KeyAction
↑ ↓Navigate lobby
EnterJoin table as observer
tTake a seat (auto-assigned)
lLeave seat / leave table
← →Adjust bet
EnterConfirm bet
hHit
sStand
qQuit

Deployment

Server runs on Hetzner via Docker. Deploy triggers automatically on push to master.

# Manual redeploy
gh workflow run deploy.yml

Release Management

Uses release-plz for automated versioning on master:

  • feat: → minor bump
  • fix: → patch bump
  • feat!: / fix!: → major bump