| 01-tournament-engine |
05 |
api, database, template |
| go |
| crud |
| blind-structure |
| chip-set |
| payout |
| buyin |
| wizard |
| tournament-template |
| chi |
| libsql |
|
| phase |
provides |
| 01-tournament-engine (Plan A) |
Project scaffold, chi router, middleware, store layer |
|
| phase |
provides |
| 01-tournament-engine (Plan B) |
Database schema with all building block tables |
|
|
| ChipSet CRUD service with denomination management |
| BlindStructure CRUD service with level validation |
| PayoutStructure CRUD service with bracket/tier nesting and 100% sum validation |
| BuyinConfig CRUD service with rake split validation |
| TournamentTemplate CRUD service with FK validation and expanded view |
| Structure wizard algorithm (geometric progression, denomination snapping, break insertion) |
| 4 built-in blind structures (Turbo, Standard, Deep Stack, WSOP-style) |
| Built-in payout structure with 4 entry-count brackets |
| 4 built-in buy-in configs with rake splits |
| 4 built-in tournament templates composing all above |
| Full REST API for all building blocks and templates |
|
| tournament-lifecycle |
| frontend-templates |
| clock-engine |
|
| added |
patterns |
|
|
| Service-per-entity CRUD pattern with *sql.DB injection |
| Transaction-based create/update with nested entity replacement |
| FK reference validation before template creation |
| Expanded view pattern (GetTemplate vs GetTemplateExpanded) |
| Seed migration with INSERT OR IGNORE for idempotent built-in data |
|
|
| created |
modified |
| internal/template/chipset.go |
| internal/template/payout.go |
| internal/template/buyin.go |
| internal/template/tournament.go |
| internal/blind/structure.go |
| internal/blind/wizard.go |
| internal/blind/templates.go |
| internal/server/routes/templates.go |
| internal/store/migrations/005_builtin_templates.sql |
| internal/blind/wizard_test.go |
| internal/template/tournament_test.go |
|
| internal/server/server.go |
|
|
| Seed data uses INSERT OR IGNORE with explicit IDs for idempotent re-runs |
| Wizard generates preview-only levels (not auto-saved) for TD review |
| BB ante used in WSOP-style template (separate from standard ante field) |
| Payout brackets must be contiguous ranges (no gaps between min/max entries) |
|
| Service CRUD pattern: NewXService(db) with Create/Get/List/Update/Delete/Duplicate |
| Nested entity pattern: replace-all on update (delete children, re-insert) |
| Route registration: Register(chi.Router) method for modular route mounting |
|
| BLIND-01 |
| BLIND-02 |
| BLIND-03 |
| BLIND-04 |
| BLIND-05 |
| BLIND-06 |
| CHIP-01 |
| CHIP-02 |
| CHIP-03 |
| CHIP-04 |
| FIN-01 |
| FIN-02 |
| FIN-05 |
| FIN-06 |
| FIN-10 |
|
10min |
2026-03-01 |