Skip to main content

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.
DocumentDescription
API & Data Models100+ REST/WebSocket endpoints and 25+ TypeScript interfaces
Wireframes23 annotated wireframes for all UI surfaces
Implementation Plan14 phases with testing, telemetry, accessibility
Tournament ManagementComprehensive tournament admin with 10 formats, matchplay, series
Tournament Wireframes20 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

PersonaKey JobsSuccess Signal
Club Ops ManagerShape inventory (blocks, rules), publish schedulesNo conflicts; visibility set per channel
Starter / On-courseCheck-in, swap carts, resolve waits≤ 1 min from scan to update
Revenue ManagerTune rates/visibility, monitor demandHeatmap & revenue trends with forecasts
Support / CXResolve booking issues, resend commsSingle slot view with audit + resend

SurfacePurposeStates
Tee Sheet GridDaily grid with clickable tilesAvailable, Held, Blocked, Checked-in, Weather alert
Slot DrawerFull booking context + actionsAssign carts/items, adjust players, notes, audit
Blocks BoardEvents/maintenance/recurring blocksConflict preview, inline recurrence
Rules & RatesBooking windows, priority rules, rate tablesMember vs visitor, channel overrides
Starter ViewTablet-first flowQR check-in, pace alerts, quick swaps
WaitlistQueue and auto-offersOffer ladder, expiry, notifications
AnalyticsDemand/utilization/revenueHeatmap, trendlines, forecast confidence

Scope

In scope

AreaDescription
Core Tee SheetDaily grid, slot tiles, detail drawer
Block ManagementEvents, maintenance, competitions, recurring blocks
Rules EngineBooking windows, rate rules, channel and member priority
Course SettingsIntervals, tees, online/offline, channel visibility
Weather IntegrationSlot-level forecasts, playing score, alerts
Cart ManagementInventory, reservations, tiered pricing
Additional ItemsEquipment/services/F&B linked to bookings
Real-time OpsWebSocket updates, QR check-in, pace tracking
Player IntelligenceFlags, profile popovers, no-show history
WaitlistQueue, auto-offer, notifications
Communication HubTemplates, bulk sends, reminders
Tournament SupportCompetitions, shotgun starts, group bookings
AnalyticsDemand heatmap, utilization, revenue, forecasts
Course ConditionsGreens/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)

  1. View Daily Sheet: Club → Course → Date → Grid → Tap tile → Drawer with players, carts, items, weather, audit.
  2. Create Block: Blocks tab → “Create” → Name/type/time/tees → Conflict preview → Save (recurrence optional).
  3. Reserve Cart: Slot drawer → Pick cart → Linked to booking → Inventory updates in grid.
  4. Check In: Starter view → Scan QR / tap check-in → Live update; record tee-off; pace status adjusts.
  5. 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)

PhasePriorityFeatures
1P0Core grid, tiles, quick stats
2P0Blocks + conflict detection + recurrence
3P1Rules & rate windows
4P1Settings, starter sheet export/PDF
5P1Weather with playing scores
6P1Carts & additional items
7P2WebSocket live ops, check-in, starter view
8P2Player intelligence, flags, profiles
9P2Waitlist engine
10P2Communication hub
11P2Tournament / group management
12P3Analytics
13P3Drag & drop, mobile view, conditions
14P3Optimizations

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

FieldFormatExample
TimesHH:mm (24h)06:00, 14:30
DatesISO 86012025-12-25
Days of week3-letter codesMON, TUE, WED
Currency3-letter ISOZAR, GBP, USD
AmountsCents (integer)55000 = R550.00

Open Questions

  1. Should admins move/cancel bookings directly here vs POS-only?
  2. Is a combined multi-course view required for larger clubs?
  3. Depth of rate simulation (what-if vs full pricing engine)?
  4. Should block creation trigger player notifications?
  5. How should POS integration work for walk-ins?
  6. Weather refresh cadence and SLA?
  7. Playing score configurability per club?
  8. Cart GPS tracking integration?
  9. Real-time inventory deduction for items?
  10. Weather-based dynamic pricing toggle?

Revision History

DateAuthorChanges
2025-12-09Rudi HaarhoffInitial specification with wireframes
2025-12-09Rudi HaarhoffAdded weather integration with slot-level forecasts
2025-12-09Rudi HaarhoffAdded golf cart and additional items management
2025-12-09Rudi HaarhoffRedesigned to clickable tiles with player info
2025-12-09Rudi HaarhoffAdded real-time, player intelligence, waitlist, analytics
2025-12-09Rudi HaarhoffSplit into 4 focused documents for maintainability
2025-12-10Rudi HaarhoffRefreshed for modern look, personas, navigation map, visual cues