Skip to main content

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.

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

  1. User navigates to TeeTime Admin
  2. If not authenticated, redirected to /login
  3. User enters credentials (email, password)
  4. On success, redirected to /clubs (default landing)
  5. JWT token stored in localStorage

1.2 Logout Flow

  1. User clicks avatar/logout button
  2. Token cleared from localStorage
  3. Redirected to /login

2. Club Management Flows

2.1 View Club List

Route: /clubs

  1. User navigates to Clubs from sidebar
  2. Table displays all clubs (Club Code, Name, Actions)
  3. User can search/filter clubs
  4. Click "Edit" to view club details

2.2 Create New Club

Route: /clubs/new

  1. User clicks "Create Club" button on Club List
  2. 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)
  3. User fills form and clicks "Save"
  4. On success, redirected to Club List with success message

2.3 Edit Existing Club

Route: /clubs/:clubId

  1. User clicks "Edit" on a club row
  2. Form pre-populated with existing data
  3. Link available: "Manage association course mappings"
  4. User modifies fields and clicks "Save"
  5. On success, redirected to Club List

2.4 Manage Course Mappings

Route: /clubs/:clubId/course-mappings

  1. User clicks "Manage association course mappings" link
  2. Table shows existing course mappings
  3. User can add/edit/remove mappings
  4. Changes saved to backend

2.5 View Club Memberships

Route: /clubs/:clubId/memberships

  1. User navigates to club memberships
  2. View members associated with club
  3. Manage membership records

3. Course Management Flows

3.1 View Courses

Route: /courses

  1. User navigates to Courses from sidebar
  2. Select a club from dropdown
  3. Table displays courses for selected club

3.2 Add Course

  1. User clicks "Add Course" button
  2. Modal opens with course form:
    • Name
    • Holes
    • Par
    • Course Rating
    • Slope Rating
  3. User fills form and clicks "Save"
  4. Modal closes, table refreshes

3.3 Edit Course

  1. User clicks "Edit" on course row
  2. Modal opens with pre-populated form
  3. User modifies and saves
  4. Modal closes, table refreshes

4. Tee Sheet Flows

4.1 View Tee Sheet Dashboard

Route: /tee-sheets

  1. User navigates to Tee Sheets from sidebar
  2. Select date range using calendar
  3. Dashboard displays tee sheet settings and timeline

4.2 Configure Tee Sheet Settings

  1. User selects date range
  2. Modify settings:
    • Interval Minutes (tee time spacing)
    • Crossover Break (gap between front/back nine)
    • Offline Reason (if course unavailable)
  3. Click "Save" to persist settings

4.3 Download Starter Sheet

  1. User selects a date
  2. Click "Download Starter Sheet"
  3. PDF generated and downloaded
  4. Contains printable tee sheet for starters

4.4 Configure Member Rules

Tab: Rules → Member Rules

  1. Navigate to Tee Sheets dashboard
  2. Select "Rules" tab, then "Member Rules" subtab
  3. View existing member booking rules
  4. 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)
  5. Toggle rule enabled/disabled
  6. Edit existing rules via row action menu
  7. Delete rules that are no longer needed

4.5 Configure Rate Rules

Tab: Rules → Rate Rules

  1. Navigate to Tee Sheets dashboard
  2. Select "Rules" tab, then "Rate Rules" subtab
  3. View existing pricing rules
  4. 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)
  5. Set rule priority (lower = higher priority)
  6. Toggle rule enabled/disabled
  7. Preview rate calculation for test scenarios

4.6 View Tee Time Timeline

  1. Navigate to Tee Sheets dashboard
  2. Timeline shows visual representation of tee times
  3. Color coding indicates:
    • Available slots (green)
    • Partially booked (yellow)
    • Fully booked (red)
    • Blocked/Offline (gray)
  4. Hover over slot for booking details
  5. Click slot to view/manage booking

5. Player Management Flows

5.1 Search Players

Route: /players

  1. User navigates to Players from sidebar
  2. Enter search query (name or email)
  3. Table filters to matching players
  4. Pagination for large result sets

5.2 View Player Details

  1. User clicks on player row
  2. Tabs appear below table:
    • Favorites Tab: Player's favorite clubs
    • Buddies Tab: Player's buddies/friends

5.3 Manage Favorites

  1. Select player from table
  2. Switch to Favorites tab
  3. Add favorite: Enter Club ID, click "Add Favorite"
  4. Remove favorite: Click "Remove" button
  5. Remove stale: Click "Remove stale" to clean up invalid favorites

5.4 Manage Buddies

  1. Select player from table
  2. Switch to Buddies tab
  3. Add buddy: Enter Buddy ID, click "Add Buddy"
  4. Remove buddy: Click "Remove" button
  5. Remove stale: Click "Remove stale" to clean up invalid buddies

6. Reports Flows

6.1 View Performance Reports

Route: /reports

  1. User navigates to Reports from sidebar
  2. Select report range (7, 30, or 90 days)
  3. Dashboard displays:
    • Summary Cards (Total clubs, Bridge-enabled, Avg utilization, Bookings)
    • Revenue & Yield Card
    • Daily Breakdown Table

6.2 View Advanced Breakdowns

  1. Scroll down on Reports page
  2. 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

  1. User navigates to Benefits from sidebar
  2. Agreements table displays all reciprocity agreements
  3. Filter by: Search, Type, Status, Network, Club
  4. Export to CSV available

7.2 Create Network Agreement

  1. Click "Create Agreement" or empty state button
  2. Select Type: "Network Agreement"
  3. Select Network from dropdown
  4. Configure:
    • Discount Type (Percentage, Fixed Amount, Fixed Rate, Rate Tier)
    • Discount Value
    • Priority (lower = higher priority)
    • Start/End Date
    • Active status
  5. Optional restrictions:
    • Valid Days (weekdays, weekends, all)
    • Time Window (from/to)
    • Blackout Dates
    • Handicap range
  6. Click "Create Agreement"
  7. Agreement appears in table

7.3 Create Bilateral Agreement

  1. Click "Create Agreement"
  2. Select Type: "Bilateral Agreement"
  3. Select Club A and Club B
  4. Select Direction (Both ways, A→B only, B→A only)
  5. Configure discount and restrictions
  6. Click "Create Agreement"

7.4 Edit Agreement

  1. Click row actions menu → "Edit"
  2. Drawer opens with pre-populated form
  3. Modify fields
  4. Click "Update Agreement"

7.5 Clone Agreement

  1. Click row actions menu → "Clone"
  2. New agreement created with same settings
  3. Drawer opens for modifications

7.6 Toggle Agreement Active Status

  1. Click the Active switch on agreement row
  2. Status updates immediately

7.7 Delete Agreement

  1. Click row actions menu → "Delete"
  2. Confirmation modal appears
  3. Click "Delete" to confirm
  4. Agreement removed from table

7.8 Bulk Operations

  1. Select multiple agreements using checkboxes
  2. Click "Activate", "Deactivate", or "Delete"
  3. Bulk operation applied to selected agreements

7.9 Import/Export Agreements

  1. Click "Export CSV" to download current agreements
  2. Click "Import CSV" to upload agreements
  3. Paste CSV data, click "Preview"
  4. Review parsed rows, click "OK" to import

7.10 Manage Network Memberships

Tab: Networks

  1. Navigate to Networks tab in Benefits
  2. Expand network to view members
  3. Click "Add Club to [Network]"
  4. Search and select club
  5. Toggle membership active status
  6. Remove membership via delete button

7.11 Home Club Map Editor

  1. Select provider from dropdown
  2. View existing mappings (Provider Code → TeeTime Club)
  3. Add mapping: Click "Add Mapping", enter provider code, select club
  4. Remove mapping: Click delete icon
  5. Save changes: Click "Save Map"
  6. Run diagnostics to check for issues

7.12 Eligibility Preview

  1. Navigate to Preview tab
  2. Fill in test parameters:
    • Club
    • Membership Number
    • Provider Code
    • Home Club Code
    • Tee Date/Time
    • Handicap
    • Base Price (optional)
    • Stacking Mode
  3. Click "Run Preview"
  4. View eligibility result (ELIGIBLE/NOT ELIGIBLE)
  5. If eligible, see price breakdown and applied discounts

7.13 View Diagnostics

  1. Navigate to Diagnostics tab
  2. View configuration issues:
    • Errors (red) - Critical issues
    • Warnings (orange) - Potential problems
    • Info (blue) - Informational notes
  3. Click on issue to expand details
  4. Click links to navigate to related agreements/networks

8. Access Control Flows

8.1 View Access Control Overview

Route: /access-control

  1. User navigates to Access Control from sidebar
  2. 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

  1. Click "Tenant Access" in sidebar
  2. Select target tenant from list
  3. 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

  1. View list of all permissions
  2. Filter by feature or action type
  3. Click "Create Permission" to define new permission
  4. Edit existing permissions (name, description, feature, action)

8.4 Manage Roles

Route: /tenants/:tenantId/access-control/roles

  1. View list of all roles
  2. Click "Create Role" to define new role
  3. Assign permissions to role via checkbox selection
  4. Edit role name, description, and permissions
  5. Delete unused roles

8.5 Manage Users

Route: /tenants/:tenantId/access-control/users

  1. View list of users in tenant
  2. Search users by name or email
  3. Click user row to view/edit details
  4. Assign roles to user
  5. Grant direct permissions (overrides role-based)
  6. Deactivate/reactivate user accounts

9. System Health Flows

9.1 View Health Dashboard

Route: /health

  1. User navigates to Health from sidebar or admin menu
  2. Dashboard displays system health overview:
    • Build timestamp
    • Quick overrides for API endpoints
    • Audience selector for token validation

9.2 Review Core Probes

  1. View probe results for all backend services:
    • Identity Provider /health and /health/ready
    • Tee Time API /health and /health/ready
    • Messaging API /health and /health/ready
    • Access Control /health and /health/ready
  2. Each probe shows: Status (OK/FAIL), Response time (ms)
  3. Click "Refresh" to re-run all probes

9.3 IDP Diagnostics

  1. Expand IDP Diagnostics panel
  2. View identity provider configuration
  3. Test token validation
  4. Verify JWKS endpoint accessibility

9.4 Login Flow Diagnostics

  1. Expand Login Flow panel
  2. Test authentication flow end-to-end
  3. Verify CSRF token generation
  4. Check session cookie configuration

9.5 Auth Proxy Diagnostics

  1. Expand Auth Proxy panel
  2. Verify proxy routing to upstream IDP
  3. Test CSRF endpoint accessibility
  4. Validate cookie forwarding

9.6 Route Access Diagnostics

  1. View route accessibility table
  2. For each protected route, verify:
    • Authentication required
    • Feature/action capability
    • Access granted/denied status
  3. Routes include: Clubs, Courses, Tee Sheets, Players, Reports, Access Control paths

9.7 Admin API Check

  1. View authenticated API probe results
  2. Tests /api/admin/clubs endpoint
  3. Shows: Auth status, response code, latency
  4. Copy base URL for debugging

10. Global Features

  1. Use search bar in header
  2. Search across clubs, courses, players
  3. Results displayed contextually

10.2 Breadcrumb Navigation

  1. Breadcrumbs show current location
  2. Click breadcrumb segment to navigate back
  3. "Admin" link returns to Clubs (home)

10.3 Responsive Layout

  1. Desktop: Full sidebar + header menu
  2. Tablet/Mobile: Collapsible sidebar
  3. Toggle button shows/hides sidebar

11. Tournament Management Flows

11.1 View Tournament List

Route: /tournaments

  1. User navigates to Tournaments from sidebar
  2. Table displays all competitions with columns:
    • Name, Format, Status, Entries, Next Round, Actions
  3. Filter by status (Draft, Open, In Progress, Completed)
  4. Click "Calendar" to switch to calendar view
  5. Click "Series" to manage Order of Merit
  6. Click row to view tournament detail

11.2 Create New Competition

Route: /tournaments/new

  1. User clicks "Create Competition" button
  2. 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
  3. Click "Create" to save competition
  4. Redirected to competition detail

11.3 Manage Entries

Route: /tournaments/:id → Entries Tab

  1. View entries table with player name, division, handicap, status
  2. Click "Add Entry" to open entry modal
  3. Search player, select division, confirm handicap
  4. Click "Withdraw" on entry row to withdraw with reason
  5. Click "Sync Tee Sheet" to import entries from linked tee sheet
  6. Export entries to CSV

11.4 Generate Draw

Route: /tournaments/:id → Draw Tab

  1. Select round from dropdown
  2. If no draw exists:
    • Select draw type (Random, Handicap Order, Seeded, Tee Time Order)
    • Configure group size and start time
    • Click "Generate Draw"
  3. View pairings table with groups, players, tee times
  4. Manual adjustments:
    • Drag to swap players between groups
    • Click "Move" to change player position
  5. Click "Lock Draw" to prevent further changes
  6. Click "Print" to generate starter sheet PDF

11.5 Live Scoring Console

Route: /tournaments/:id/scoring

  1. Select round from dropdown
  2. View scorecard status grid:
    • Not Started, In Progress, Submitted, Attested, Locked
  3. Click player name to open scorecard editor
  4. Enter hole-by-hole scores (OUT 1-9, IN 10-18)
  5. View calculated totals (Gross, Net, Stableford)
  6. Click "Attest" to open attestation modal:
    • Select marker (another player)
    • Choose Attest or Dispute
    • Provide dispute reason if disputing
  7. Click "Lock" to finalize scorecard
  8. Click "Unlock" (admin only) to allow edits

11.6 View Leaderboard

Route: /tournaments/:id → Leaderboard Tab

  1. View live leaderboard with positions
  2. Toggle auto-refresh (30s interval)
  3. Filter by division
  4. Expand row to view countback details (for ties)
  5. Click "Export CSV" to download results
  6. Click "Print" for print-friendly view
  7. Click "Finalize" when all scores locked

11.7 Matchplay Bracket Management

Route: /tournaments/:id → Matchplay Tab

  1. If no bracket exists:
    • Select bracket size (4, 8, 16, 32, 64)
    • Click "Create Bracket"
    • Click "Seed" to auto-seed from qualifying
  2. View interactive bracket visualization
  3. Click match to record result:
    • Select winner
    • Enter result (e.g., "3&2", "1 up", "19th")
  4. Bracket advances automatically
  5. Click "Print" for bracket PDF

11.8 Side Competitions

Route: /tournaments/:id → Side Competitions Tab

  1. Select competition type: Nearest Pin, Longest Drive, 2's Club
  2. Select round from dropdown
  3. Record result:
    • Select hole number
    • Select player
    • Enter distance (NTP/LD only)
    • Click "Record"
  4. View entries table with delete option
  5. Results integrate with prize allocation

11.9 Prize Management

Route: /tournaments/:id → Prizes Tab

  1. View prize allocations table
  2. Apply template:
    • Select from club's prize templates
    • Click "Apply"
  3. Create new template:
    • Click "New Template"
    • Enter name, currency, position ranges, amounts
  4. Manual allocation:
    • Click "Allocate Prize"
    • Select entry, prize name, position, amount
  5. Delete allocations as needed

11.10 Appeals Workflow

Route: /tournaments/:id → Appeals Tab

  1. View appeals list with status
  2. Create appeal:
    • Click "Open Appeal"
    • Select entry/scorecard (optional)
    • Enter reason
  3. Review appeal:
    • Click "Review" to start review
    • Status changes to Under Review
  4. Resolve appeal:
    • Click "Resolve" or "Reject"
    • Enter resolution notes
  5. View appeal history

11.11 Series / Order of Merit

Route: /tournaments/series

  1. View series list with standings summary
  2. Create series:
    • Click "Create Series"
    • Enter name, scoring rule (Points/Average)
  3. Link competitions:
    • Click series row
    • Click "Link Competition"
    • Select competition, set weight multiplier
  4. View standings table with points/position
  5. Click "Recalculate" to update standings

11.12 Calendar View

Route: /tournaments/calendar

  1. View month calendar with competition markers
  2. Color coding by status:
    • Gray: Draft
    • Blue: Open
    • Green: In Progress
    • Purple: Completed
  3. Click date to see competitions on that day
  4. Click competition to navigate to detail
  5. Navigate months using arrow buttons

Error States

API Error Handling

  • Network errors display retry button
  • Form validation errors shown inline
  • Toast notifications for success/failure

Loading States

  • Skeleton loaders for data fetching
  • Spinner for form submissions
  • Disabled buttons during async operations


Component Storybooks

Interactive component documentation is available in Storybook:

TeeTime Admin Storybook

URL: https://teetime-admin-storybook.uat.digiwedge.com

ComponentStories
ClubFormDefault, Edit, Validation
ClubListDefault, Loading, Empty, Error
CoursesDefault, Loading, NoClubs, Error
PlayersDefault, Loading, WithSelection
ReportsDefault, Loading, Custom Range
TeeSheetDashboardDefault, WithRules, Loading
ClubMembershipsDefault, Loading, Empty, ManyMembers
TeeSheetsDefault, Loading, NoRules
CourseMappingsPageDefault, Loading, Empty, Error
HealthPageHealthy, Degraded, Unhealthy
TournamentListDefault, Loading, Empty, Error, ManyCompetitions
TournamentDetailInProgress, Draft, Completed, TeamEvent, Loading, Error
TournamentLeaderboardDefault, WithCountback, LiveScoring, StrokeFormat, Empty, Loading
TournamentMatchplayBracketInProgress, NoBracket, BracketCompleted, Bracket16, Loading
TournamentCalendarDefault, BusyMonth, Empty, Loading
ScoringConsoleDefault, AllCompleted, EarlyScoring, WithAttestation, Archived, Loading

TeeTime UI Storybook

URL: https://teetime-storybook.uat.digiwedge.com

Contains shared UI components used across tee time applications.

Benefits Admin Library

Components from @digiwedge/ui-benefits-admin:

ComponentStories
AgreementsTableDefault, Loading, Empty, BulkActions, Highlighted
AgreementFormDrawerNetwork, Bilateral, WithWarning, Edit
NetworksManagerDefault, Loading, Empty, WithToggle
EligibilityPreviewDefault, Eligible, Ineligible, Stacked, Loading
DiagnosticsPanelDefault, Loading, NoIssues, Errors, Warnings
HomeClubMapEditorDefault, Loading, Empty, WithWarnings