TeeTime Tee Sheet Management Admin UI — Product Spec (Refreshed)
Status: Draft · Owners: TeeTime Eng · Last Updated: 2025-12-09
Modern, high-signal admin workspace for tee sheets: fast grid navigation, rich context on every slot, and live operational cues.
Quick Orientation
- Purpose: Give operators a single, confident view of tee-sheet supply, rules, and on-the-day execution.
- Audience: Club ops, starters, revenue managers, and support teams.
- What’s here: Product shape, experience principles, navigation model, and the at-a-glance capability map. Deep dives sit in the linked specs.
Related Documents
| Document | Description |
|---|---|
| API & Data Models | 100+ REST/WebSocket endpoints and 25+ TypeScript interfaces |
| Wireframes | 23 annotated wireframes for all UI surfaces |
| Implementation Plan | 14 phases with testing, telemetry, accessibility |
| Tournament Management | Comprehensive tournament admin with 10 formats, matchplay, series |
| Tournament Wireframes | 20 wireframes for tournament admin screens |
Experience Principles
- Instant context: Every slot shows state at a glance (players, carts, weather, flags) without opening drawers.
- Guided control: Inline conflict checks and “safe” defaults prevent accidental overrides.
- Operational clarity: Clear state chips (available, held, blocked, checked-in), bright warnings for weather/pace.
- Responsive craft: Tablet-friendly starter view; keyboard and quick-search flows for desk ops.
- Composable surfaces: Grid, drawer, timeline, and analytics panels share components and language.
Personas & Core Jobs
| Persona | Key Jobs | Success Signal |
|---|---|---|
| Club Ops Manager | Shape inventory (blocks, rules), publish schedules | No conflicts; visibility set per channel |
| Starter / On-course | Check-in, swap carts, resolve waits | ≤ 1 min from scan to update |
| Revenue Manager | Tune rates/visibility, monitor demand | Heatmap & revenue trends with forecasts |
| Support / CX | Resolve booking issues, resend comms | Single slot view with audit + resend |
Navigation & Surfaces
| Surface | Purpose | States |
|---|---|---|
| Tee Sheet Grid | Daily grid with clickable tiles | Available, Held, Blocked, Checked-in, Weather alert |
| Slot Drawer | Full booking context + actions | Assign carts/items, adjust players, notes, audit |
| Blocks Board | Events/maintenance/recurring blocks | Conflict preview, inline recurrence |
| Rules & Rates | Booking windows, priority rules, rate tables | Member vs visitor, channel overrides |
| Starter View | Tablet-first flow | QR check-in, pace alerts, quick swaps |
| Waitlist | Queue and auto-offers | Offer ladder, expiry, notifications |
| Analytics | Demand/utilization/revenue | Heatmap, trendlines, forecast confidence |
Scope
In scope
| Area | Description |
|---|---|
| Core Tee Sheet | Daily grid, slot tiles, detail drawer |
| Block Management | Events, maintenance, competitions, recurring blocks |
| Rules Engine | Booking windows, rate rules, channel and member priority |
| Course Settings | Intervals, tees, online/offline, channel visibility |
| Weather Integration | Slot-level forecasts, playing score, alerts |
| Cart Management | Inventory, reservations, tiered pricing |
| Additional Items | Equipment/services/F&B linked to bookings |
| Real-time Ops | WebSocket updates, QR check-in, pace tracking |
| Player Intelligence | Flags, profile popovers, no-show history |
| Waitlist | Queue, auto-offer, notifications |
| Communication Hub | Templates, bulk sends, reminders |
| Tournament Support | Competitions, shotgun starts, group bookings |
| Analytics | Demand heatmap, utilization, revenue, forecasts |
| Course Conditions | Greens/fairways status, pins, alerts |
Out of scope
- Real-time booking modifications (handled in POS/Bridge)
- Payment processing
- Player management (separate module)
- Dynamic pricing algorithm design (engine exists separately)
- Fleet maintenance scheduling (facilities module)
Capability Highlights
- Grid-first control: Color-coded chips for availability, holds, blocks, carts, items, flags, weather score (0–100), and quick actions on hover.
- Conflict-safe blocks: Preview overlap by course/tee/channel before saving; recurring templates with exceptions.
- Rules with clarity: Human-readable summaries (“Members 7 days, Visitors 3 days; 9-hole only after 14:00”).
- Operational speed: QR check-in, single-tap cart swap, live pace alerts, and inline waitlist offers.
- Analytics with intent: Demand heatmap by hour/day, utilization vs capacity, revenue breakdown, forecast bands, and alerting hooks.
- Accessibility: Keyboard flows for grid navigation; high-contrast chips; semantic headings for screen readers.
Key Workflows (Storyboard)
- View Daily Sheet: Club → Course → Date → Grid → Tap tile → Drawer with players, carts, items, weather, audit.
- Create Block: Blocks tab → “Create” → Name/type/time/tees → Conflict preview → Save (recurrence optional).
- Reserve Cart: Slot drawer → Pick cart → Linked to booking → Inventory updates in grid.
- Check In: Starter view → Scan QR / tap check-in → Live update; record tee-off; pace status adjusts.
- Waitlist Offer: Player queued → Slot frees → Auto-offer → Accept → Booking writes + notification.
Visual System (at a glance)
- Tiles: Bold start time, player initials, member/visitor chip, handicap, cart/item badges.
- Signals: Weather score badge, alert banner for storms, dotted border for holds, striped block for maintenance.
- Layouts: Three responsive modes — desktop grid, condensed timeline, tablet starter view.
Implementation Phases (summary)
| Phase | Priority | Features |
|---|---|---|
| 1 | P0 | Core grid, tiles, quick stats |
| 2 | P0 | Blocks + conflict detection + recurrence |
| 3 | P1 | Rules & rate windows |
| 4 | P1 | Settings, starter sheet export/PDF |
| 5 | P1 | Weather with playing scores |
| 6 | P1 | Carts & additional items |
| 7 | P2 | WebSocket live ops, check-in, starter view |
| 8 | P2 | Player intelligence, flags, profiles |
| 9 | P2 | Waitlist engine |
| 10 | P2 | Communication hub |
| 11 | P2 | Tournament / group management |
| 12 | P3 | Analytics |
| 13 | P3 | Drag & drop, mobile view, conditions |
| 14 | P3 | Optimizations |
Full breakdown lives in Implementation Plan.
Technical Architecture
TeeTime Admin UI (React + Ant Design + React Query)
│
REST + WebSocket (NestJS, Socket.io)
│
Search & Enrichment Services (weather, scoring)
│
Postgres (tee sheet + bookings) + Redis (cache/queues)
Frontend: React 18+, Ant Design 5, React Query, WebSocket client
Backend: NestJS, Socket.io, PostgreSQL, Redis
Data Formats
| Field | Format | Example |
|---|---|---|
| Times | HH:mm (24h) | 06:00, 14:30 |
| Dates | ISO 8601 | 2025-12-25 |
| Days of week | 3-letter codes | MON, TUE, WED |
| Currency | 3-letter ISO | ZAR, GBP, USD |
| Amounts | Cents (integer) | 55000 = R550.00 |
Open Questions
- Should admins move/cancel bookings directly here vs POS-only?
- Is a combined multi-course view required for larger clubs?
- Depth of rate simulation (what-if vs full pricing engine)?
- Should block creation trigger player notifications?
- How should POS integration work for walk-ins?
- Weather refresh cadence and SLA?
- Playing score configurability per club?
- Cart GPS tracking integration?
- Real-time inventory deduction for items?
- Weather-based dynamic pricing toggle?
Revision History
| Date | Author | Changes |
|---|---|---|
| 2025-12-09 | Rudi Haarhoff | Initial specification with wireframes |
| 2025-12-09 | Rudi Haarhoff | Added weather integration with slot-level forecasts |
| 2025-12-09 | Rudi Haarhoff | Added golf cart and additional items management |
| 2025-12-09 | Rudi Haarhoff | Redesigned to clickable tiles with player info |
| 2025-12-09 | Rudi Haarhoff | Added real-time, player intelligence, waitlist, analytics |
| 2025-12-09 | Rudi Haarhoff | Split into 4 focused documents for maintainability |
| 2025-12-10 | Rudi Haarhoff | Refreshed for modern look, personas, navigation map, visual cues |