TeeTime Admin User Flows
This document describes all user flows in the TeeTime Admin application. Each flow includes the screens involved, user actions, and expected outcomes.
Navigation Structure
TeeTime Admin
├── Tee Time Group
│ ├── Clubs (/clubs)
│ ├── Courses (/courses)
│ ├── Tee Sheets (/tee-sheets)
│ ├── Players (/players)
│ ├── Reports (/reports)
│ ├── Tournaments (/tournaments)
│ │ ├── List View (/tournaments)
│ │ ├── Calendar View (/tournaments/calendar)
│ │ ├── Series / OoM (/tournaments/series)
│ │ └── Competition Detail (/tournaments/:id)
│ │ ├── Entries Tab
│ │ ├── Draw Tab
│ │ ├── Leaderboard Tab
│ │ ├── Scoring (/tournaments/:id/scoring)
│ │ ├── Matchplay Tab
│ │ ├── Side Competitions Tab
│ │ ├── Prizes Tab
│ │ └── Appeals Tab
│ └── Benefits & Reciprocity (/benefits) [feature-flagged]
└── Access Control Group
├── Overview (/access-control)
└── Tenant Access (/tenants/:tenantId/access-control)
1. Authentication Flows
1.1 Login Flow
Route: /login
- User navigates to TeeTime Admin
- If not authenticated, redirected to
/login - User enters credentials (email, password)
- On success, redirected to
/clubs(default landing) - JWT token stored in localStorage
1.2 Logout Flow
- User clicks avatar/logout button
- Token cleared from localStorage
- Redirected to
/login
2. Club Management Flows
2.1 View Club List
Route: /clubs
- User navigates to Clubs from sidebar
- Table displays all clubs (Club Code, Name, Actions)
- User can search/filter clubs
- Click "Edit" to view club details
2.2 Create New Club
Route: /clubs/new
- User clicks "Create Club" button on Club List
- Form displays with fields:
- Club Code (required)
- Name (required)
- Feature flags (Bridge, Events, Sport Booking, Golf Events, Membership, Tee Sheet)
- Asset uploads (Logo, Header, Footer, Background)
- User fills form and clicks "Save"
- On success, redirected to Club List with success message
2.3 Edit Existing Club
Route: /clubs/:clubId
- User clicks "Edit" on a club row
- Form pre-populated with existing data
- Link available: "Manage association course mappings"
- User modifies fields and clicks "Save"
- On success, redirected to Club List
2.4 Manage Course Mappings
Route: /clubs/:clubId/course-mappings
- User clicks "Manage association course mappings" link
- Table shows existing course mappings
- User can add/edit/remove mappings
- Changes saved to backend
2.5 View Club Memberships
Route: /clubs/:clubId/memberships
- User navigates to club memberships
- View members associated with club
- Manage membership records
3. Course Management Flows
3.1 View Courses
Route: /courses
- User navigates to Courses from sidebar
- Select a club from dropdown
- Table displays courses for selected club
3.2 Add Course
- User clicks "Add Course" button
- Modal opens with course form:
- Name
- Holes
- Par
- Course Rating
- Slope Rating
- User fills form and clicks "Save"
- Modal closes, table refreshes
3.3 Edit Course
- User clicks "Edit" on course row
- Modal opens with pre-populated form
- User modifies and saves
- Modal closes, table refreshes
4. Tee Sheet Flows
4.1 View Tee Sheet Dashboard
Route: /tee-sheets
- User navigates to Tee Sheets from sidebar
- Select date range using calendar
- Dashboard displays tee sheet settings and timeline
4.2 Configure Tee Sheet Settings
- User selects date range
- Modify settings:
- Interval Minutes (tee time spacing)
- Crossover Break (gap between front/back nine)
- Offline Reason (if course unavailable)
- Click "Save" to persist settings
4.3 Download Starter Sheet
- User selects a date
- Click "Download Starter Sheet"
- PDF generated and downloaded
- Contains printable tee sheet for starters
4.4 Configure Member Rules
Tab: Rules → Member Rules
- Navigate to Tee Sheets dashboard
- Select "Rules" tab, then "Member Rules" subtab
- View existing member booking rules
- Click "Add Rule" to create new rule:
- Rule Name
- Days Ahead (booking window)
- Player Classifications (Member, Guest, Visitor)
- Tees (White, Blue, Black, etc.)
- Days of Week
- Time Window
- Statuses (Confirmed, Provisional)
- Toggle rule enabled/disabled
- Edit existing rules via row action menu
- Delete rules that are no longer needed
4.5 Configure Rate Rules
Tab: Rules → Rate Rules
- Navigate to Tee Sheets dashboard
- Select "Rules" tab, then "Rate Rules" subtab
- View existing pricing rules
- Click "Add Rule" to create new rule:
- Rule Name
- Base Rate (amount)
- Currency (ZAR, USD, etc.)
- Player Classifications
- Days of Week
- Time Window (peak/off-peak)
- Associations (member discounts)
- Set rule priority (lower = higher priority)
- Toggle rule enabled/disabled
- Preview rate calculation for test scenarios
4.6 View Tee Time Timeline
- Navigate to Tee Sheets dashboard
- Timeline shows visual representation of tee times
- Color coding indicates:
- Available slots (green)
- Partially booked (yellow)
- Fully booked (red)
- Blocked/Offline (gray)
- Hover over slot for booking details
- Click slot to view/manage booking
5. Player Management Flows
5.1 Search Players
Route: /players
- User navigates to Players from sidebar
- Enter search query (name or email)
- Table filters to matching players
- Pagination for large result sets
5.2 View Player Details
- User clicks on player row
- Tabs appear below table:
- Favorites Tab: Player's favorite clubs
- Buddies Tab: Player's buddies/friends
5.3 Manage Favorites
- Select player from table
- Switch to Favorites tab
- Add favorite: Enter Club ID, click "Add Favorite"
- Remove favorite: Click "Remove" button
- Remove stale: Click "Remove stale" to clean up invalid favorites
5.4 Manage Buddies
- Select player from table
- Switch to Buddies tab
- Add buddy: Enter Buddy ID, click "Add Buddy"
- Remove buddy: Click "Remove" button
- Remove stale: Click "Remove stale" to clean up invalid buddies
6. Reports Flows
6.1 View Performance Reports
Route: /reports
- User navigates to Reports from sidebar
- Select report range (7, 30, or 90 days)
- Dashboard displays:
- Summary Cards (Total clubs, Bridge-enabled, Avg utilization, Bookings)
- Revenue & Yield Card
- Daily Breakdown Table
6.2 View Advanced Breakdowns
- Scroll down on Reports page
- View additional analytics:
- Channel Mix (Mobile App, Website, Walk-in)
- Member vs Visitor split
- Price Sources (Standard vs Dynamic)
- Utilisation Heatmap by time band
- Lead Time buckets
- Course/Tee Split
- Refunds breakdown
7. Benefits & Reciprocity Flows
Feature Flag: VITE_ENABLE_BENEFITS_ADMIN
Route: /benefits/*
7.1 View Agreements
- User navigates to Benefits from sidebar
- Agreements table displays all reciprocity agreements
- Filter by: Search, Type, Status, Network, Club
- Export to CSV available
7.2 Create Network Agreement
- Click "Create Agreement" or empty state button
- Select Type: "Network Agreement"
- Select Network from dropdown
- Configure:
- Discount Type (Percentage, Fixed Amount, Fixed Rate, Rate Tier)
- Discount Value
- Priority (lower = higher priority)
- Start/End Date
- Active status
- Optional restrictions:
- Valid Days (weekdays, weekends, all)
- Time Window (from/to)
- Blackout Dates
- Handicap range
- Click "Create Agreement"
- Agreement appears in table
7.3 Create Bilateral Agreement
- Click "Create Agreement"
- Select Type: "Bilateral Agreement"
- Select Club A and Club B
- Select Direction (Both ways, A→B only, B→A only)
- Configure discount and restrictions
- Click "Create Agreement"
7.4 Edit Agreement
- Click row actions menu → "Edit"
- Drawer opens with pre-populated form
- Modify fields
- Click "Update Agreement"
7.5 Clone Agreement
- Click row actions menu → "Clone"
- New agreement created with same settings
- Drawer opens for modifications
7.6 Toggle Agreement Active Status
- Click the Active switch on agreement row
- Status updates immediately
7.7 Delete Agreement
- Click row actions menu → "Delete"
- Confirmation modal appears
- Click "Delete" to confirm
- Agreement removed from table
7.8 Bulk Operations
- Select multiple agreements using checkboxes
- Click "Activate", "Deactivate", or "Delete"
- Bulk operation applied to selected agreements
7.9 Import/Export Agreements
- Click "Export CSV" to download current agreements
- Click "Import CSV" to upload agreements
- Paste CSV data, click "Preview"
- Review parsed rows, click "OK" to import
7.10 Manage Network Memberships
Tab: Networks
- Navigate to Networks tab in Benefits
- Expand network to view members
- Click "Add Club to [Network]"
- Search and select club
- Toggle membership active status
- Remove membership via delete button
7.11 Home Club Map Editor
- Select provider from dropdown
- View existing mappings (Provider Code → TeeTime Club)
- Add mapping: Click "Add Mapping", enter provider code, select club
- Remove mapping: Click delete icon
- Save changes: Click "Save Map"
- Run diagnostics to check for issues
7.12 Eligibility Preview
- Navigate to Preview tab
- Fill in test parameters:
- Club
- Membership Number
- Provider Code
- Home Club Code
- Tee Date/Time
- Handicap
- Base Price (optional)
- Stacking Mode
- Click "Run Preview"
- View eligibility result (ELIGIBLE/NOT ELIGIBLE)
- If eligible, see price breakdown and applied discounts
7.13 View Diagnostics
- Navigate to Diagnostics tab
- View configuration issues:
- Errors (red) - Critical issues
- Warnings (orange) - Potential problems
- Info (blue) - Informational notes
- Click on issue to expand details
- Click links to navigate to related agreements/networks
8. Access Control Flows
8.1 View Access Control Overview
Route: /access-control
- User navigates to Access Control from sidebar
- View access control overview with:
- List of available tenants
- Quick access to tenant management
- Permission summary cards
8.2 Manage Tenant Access
Route: /tenants/:tenantId/access-control
- Click "Tenant Access" in sidebar
- Select target tenant from list
- View tenant-specific access controls:
- Permissions: Feature/action permission definitions
- Roles: Role templates with assigned permissions
- Users: User accounts with role assignments
- User Profiles: Extended user profile data
- Permission Assignments: Direct permission grants
- Settings: Tenant configuration
8.3 Manage Permissions
Route: /tenants/:tenantId/access-control/permissions
- View list of all permissions
- Filter by feature or action type
- Click "Create Permission" to define new permission
- Edit existing permissions (name, description, feature, action)
8.4 Manage Roles
Route: /tenants/:tenantId/access-control/roles
- View list of all roles
- Click "Create Role" to define new role
- Assign permissions to role via checkbox selection
- Edit role name, description, and permissions
- Delete unused roles
8.5 Manage Users
Route: /tenants/:tenantId/access-control/users
- View list of users in tenant
- Search users by name or email
- Click user row to view/edit details
- Assign roles to user
- Grant direct permissions (overrides role-based)
- Deactivate/reactivate user accounts
9. System Health Flows
9.1 View Health Dashboard
Route: /health
- User navigates to Health from sidebar or admin menu
- Dashboard displays system health overview:
- Build timestamp
- Quick overrides for API endpoints
- Audience selector for token validation
9.2 Review Core Probes
- View probe results for all backend services:
- Identity Provider
/healthand/health/ready - Tee Time API
/healthand/health/ready - Messaging API
/healthand/health/ready - Access Control
/healthand/health/ready
- Identity Provider
- Each probe shows: Status (OK/FAIL), Response time (ms)
- Click "Refresh" to re-run all probes
9.3 IDP Diagnostics
- Expand IDP Diagnostics panel
- View identity provider configuration
- Test token validation
- Verify JWKS endpoint accessibility
9.4 Login Flow Diagnostics
- Expand Login Flow panel
- Test authentication flow end-to-end
- Verify CSRF token generation
- Check session cookie configuration
9.5 Auth Proxy Diagnostics
- Expand Auth Proxy panel
- Verify proxy routing to upstream IDP
- Test CSRF endpoint accessibility
- Validate cookie forwarding
9.6 Route Access Diagnostics
- View route accessibility table
- For each protected route, verify:
- Authentication required
- Feature/action capability
- Access granted/denied status
- Routes include: Clubs, Courses, Tee Sheets, Players, Reports, Access Control paths
9.7 Admin API Check
- View authenticated API probe results
- Tests
/api/admin/clubsendpoint - Shows: Auth status, response code, latency
- Copy base URL for debugging
10. Global Features
10.1 Header Search
- Use search bar in header
- Search across clubs, courses, players
- Results displayed contextually
10.2 Breadcrumb Navigation
- Breadcrumbs show current location
- Click breadcrumb segment to navigate back
- "Admin" link returns to Clubs (home)
10.3 Responsive Layout
- Desktop: Full sidebar + header menu
- Tablet/Mobile: Collapsible sidebar
- Toggle button shows/hides sidebar
11. Tournament Management Flows
11.1 View Tournament List
Route: /tournaments
- User navigates to Tournaments from sidebar
- Table displays all competitions with columns:
- Name, Format, Status, Entries, Next Round, Actions
- Filter by status (Draft, Open, In Progress, Completed)
- Click "Calendar" to switch to calendar view
- Click "Series" to manage Order of Merit
- Click row to view tournament detail
11.2 Create New Competition
Route: /tournaments/new
- User clicks "Create Competition" button
- Wizard opens with steps:
- Step 1: Basics - Name, format, description, team settings
- Step 2: Handicap - Qualifying, allowance percentage, posting mode
- Step 3: Divisions - Add divisions with HCP range, gender, age, tee
- Step 4: Entry Settings - Fee, max entries, entry window
- Step 5: Rounds - Add rounds with date, course, start type
- Step 6: Review - Confirm all settings
- Click "Create" to save competition
- Redirected to competition detail
11.3 Manage Entries
Route: /tournaments/:id → Entries Tab
- View entries table with player name, division, handicap, status
- Click "Add Entry" to open entry modal
- Search player, select division, confirm handicap
- Click "Withdraw" on entry row to withdraw with reason
- Click "Sync Tee Sheet" to import entries from linked tee sheet
- Export entries to CSV
11.4 Generate Draw
Route: /tournaments/:id → Draw Tab
- Select round from dropdown
- If no draw exists:
- Select draw type (Random, Handicap Order, Seeded, Tee Time Order)
- Configure group size and start time
- Click "Generate Draw"
- View pairings table with groups, players, tee times
- Manual adjustments:
- Drag to swap players between groups
- Click "Move" to change player position
- Click "Lock Draw" to prevent further changes
- Click "Print" to generate starter sheet PDF
11.5 Live Scoring Console
Route: /tournaments/:id/scoring
- Select round from dropdown
- View scorecard status grid:
- Not Started, In Progress, Submitted, Attested, Locked
- Click player name to open scorecard editor
- Enter hole-by-hole scores (OUT 1-9, IN 10-18)
- View calculated totals (Gross, Net, Stableford)
- Click "Attest" to open attestation modal:
- Select marker (another player)
- Choose Attest or Dispute
- Provide dispute reason if disputing
- Click "Lock" to finalize scorecard
- Click "Unlock" (admin only) to allow edits
11.6 View Leaderboard
Route: /tournaments/:id → Leaderboard Tab
- View live leaderboard with positions
- Toggle auto-refresh (30s interval)
- Filter by division
- Expand row to view countback details (for ties)
- Click "Export CSV" to download results
- Click "Print" for print-friendly view
- Click "Finalize" when all scores locked
11.7 Matchplay Bracket Management
Route: /tournaments/:id → Matchplay Tab
- If no bracket exists:
- Select bracket size (4, 8, 16, 32, 64)
- Click "Create Bracket"
- Click "Seed" to auto-seed from qualifying
- View interactive bracket visualization
- Click match to record result:
- Select winner
- Enter result (e.g., "3&2", "1 up", "19th")
- Bracket advances automatically
- Click "Print" for bracket PDF
11.8 Side Competitions
Route: /tournaments/:id → Side Competitions Tab
- Select competition type: Nearest Pin, Longest Drive, 2's Club
- Select round from dropdown
- Record result:
- Select hole number
- Select player
- Enter distance (NTP/LD only)
- Click "Record"
- View entries table with delete option
- Results integrate with prize allocation
11.9 Prize Management
Route: /tournaments/:id → Prizes Tab
- View prize allocations table
- Apply template:
- Select from club's prize templates
- Click "Apply"
- Create new template:
- Click "New Template"
- Enter name, currency, position ranges, amounts
- Manual allocation:
- Click "Allocate Prize"
- Select entry, prize name, position, amount
- Delete allocations as needed
11.10 Appeals Workflow
Route: /tournaments/:id → Appeals Tab
- View appeals list with status
- Create appeal:
- Click "Open Appeal"
- Select entry/scorecard (optional)
- Enter reason
- Review appeal:
- Click "Review" to start review
- Status changes to Under Review
- Resolve appeal:
- Click "Resolve" or "Reject"
- Enter resolution notes
- View appeal history
11.11 Series / Order of Merit
Route: /tournaments/series
- View series list with standings summary
- Create series:
- Click "Create Series"
- Enter name, scoring rule (Points/Average)
- Link competitions:
- Click series row
- Click "Link Competition"
- Select competition, set weight multiplier
- View standings table with points/position
- Click "Recalculate" to update standings
11.12 Calendar View
Route: /tournaments/calendar
- View month calendar with competition markers
- Color coding by status:
- Gray: Draft
- Blue: Open
- Green: In Progress
- Purple: Completed
- Click date to see competitions on that day
- Click competition to navigate to detail
- Navigate months using arrow buttons