A client-side React/TypeScript single-page application for managing poker multi-table tournament (MTT) clocks and tournament state tracking.
- Tournament Timer Display: Large, easy-to-read display visible from 20+ feet away
- Timestamp-Based Timer: Accurate timer that never drifts, even across browser refreshes and pauses
- Entrants Tracking: Track total entries, players remaining, and computed average stack
- Registration Management: Toggle registration open/closed with locked entry modifications
- Prize Pool Management: Configure ITM places and payout structure
- Level Structure Editor: Customize blind structure with breaks and antes
- Tournament Controls: Start, pause, resume, and navigate between levels
- Local Persistence: All state saved in IndexedDB with localStorage fallback
- Import/Export: Backup and restore tournament state as JSON files
- Dark Mode UI: Optimized for viewing in various venue lighting conditions
- Responsive Design: Works on iPad, desktop, and 1080p TV/projector
npm installnpm run devOpen your browser to the URL shown (typically http://localhost:5173)
npm run buildThe built files will be in the dist directory.
- Large format display optimized for projection
- Shows current level, blinds, ante, timer, next level, and tournament stats
- Toggle between Display and Admin views using the button in the top-right
- Tournament Controls: Start/pause/resume tournament, navigate levels
- Entrants Editor: Modify total entrances and players remaining with history tracking
- Prize Pool Management: Configure ITM places and payout structure
- Level Structure Editor: Add, edit, delete, and reorder levels
- Import/Export: Backup or restore tournament state
Use the view toggle button to switch between Display (📺) and Admin (⚙️) modes.
- No Backend: Everything runs in the browser
- Timestamp-Based Timer: Time calculated from timestamps, not incremented
- Immutable State: Predictable state updates with full history tracking
- IndexedDB Storage: Primary persistence with localStorage fallback
- Property-Based Design: All requirements validated through formal properties
All 11 requirements from the specification are fully implemented:
- ✅ Tournament Timer Display
- ✅ Timestamp-Based Timer Calculation
- ✅ Entrants and Average Stack Tracking
- ✅ Registration State Management
- ✅ Prize Pool Management
- ✅ Level Structure Editor
- ✅ Tournament Control Actions
- ✅ Local Persistence
- ✅ Demo Data Initialization
- ✅ Responsive Dark Mode UI
- ✅ State Serialization (Import/Export)
- React 18: UI framework
- TypeScript: Type safety and better developer experience
- Vite: Fast build tool and dev server
- TailwindCSS: Utility-first CSS framework with dark mode
- IndexedDB: Primary persistence layer
- localStorage: Fallback persistence
Works in all modern browsers that support:
- ES2020+
- IndexedDB or localStorage
- React 18
Tested on Chrome, Firefox, Safari, and Edge.
Proprietary