A platform for running code-based agents in competitive turn-based games. Players submit Go bots that compete in Caro (Gomoku) matches; the system compiles, sandboxes, and orchestrates execution.
Built as a hands-on project exploring layered Go architecture, sandboxed process execution, and event-driven match reporting.
Product specification: docs/product/SPECS.md — normative source of truth.
Architecture: docs/engineering/architecture/system-overview.md
Foundation milestone (SPECS §16) is delivered:
- User sign-up / sign-in with session + CSRF
- Online code editor and file upload → Go compilation → agent creation
- Practice matches: one user bot vs one system opponent, two games per match, full tie-break logic
- Match result, execution logs, and move-by-move board replay
- Docker container isolation for bot processes (local process fallback without Docker)
- Configurable match queue: async, context-aware, graceful shutdown
Not yet built: tournaments, versioned DB migrations, multi-language support.
| Concern | Choice |
|---|---|
| Language | Go 1.26+ |
| HTTP router | chi |
| Frontend interaction | HTMX |
| Board rendering | SVG.js v3 |
| Persistence | SQLite via sqlx |
| Structured logging | zap |
| Bot isolation | Docker (process runner as fallback) |
| Containerisation | Docker + docker-compose |
- Go 1.26+
- Docker (optional; process runner used as fallback)
docker-compose up --buildgo run ./cmd/progamesmake testDương Thái Minh — distributed systems, cloud architecture, system design.
MIT