A real-time poker platform with a Phoenix backend, React frontend, and CFR-trained bot personalities. The project combines table state, live play, and training tooling in one repo.
frontend/: React + Vite clientbackend/: Elixir/Phoenix realtime backendtraining/: OpenSpiel-based bot training scripts
- Realtime table play over Phoenix channels
- Multiple bot styles derived from CFR training output
- Docker-first local development flow
make upLocal development:
cd frontend && bun install && bun run dev
cd backend && mix deps.get && mix phx.serverRetrain bots:
make training-retrain
make training-retrain-holdemThe repo now includes a k6-based multiplayer stress harness under load/ that simulates one websocket-connected human per VU. Each table captain clears the table, fills the remaining seats with backend bots, and keeps hands cycling so you can measure mixed human-plus-bot load.
Quick start:
make stress-stack-up
make stress-low
make stress-thousandsArtifacts land in tmp/stress-runs/ with a metadata.json and k6 summary.json for each run. Override the default layout with environment variables such as BASE_URL, HUMANS_PER_TABLE, and SESSION_SECONDS.
More detail: load/README.md