Tee Times Operations Guide

This page is a live operational reference. It pulls the current public URL, group routing emails, Render and Resend endpoints, and active contact addresses from the running site configuration. Admin codes, API keys, and other secrets are intentionally excluded.

What This System Does

  1. Golf events are created either manually in the tee-time UI or automatically from forwarded confirmation emails.
  2. Events, subscribers, settings, and logs are stored in MongoDB through the Node and Express app hosted on Render.
  3. Outbound emails are sent through Resend using the HTTP API first and SMTP fallback second.
  4. Subscribers receive new-event, cancellation, reminder, and alert emails when notifications are enabled for their group.
  5. Club request emails and extra-tee-time emails are routed to the active group's configured club request address and CC list.
  6. The public app also serves group-specific PWA manifests, mobile install behavior, trip pages, and starter-mode workflows.

Current Operational Scope

Main BRS Group

  • Full public tee-sheet flow with event creation, tee-time management, maybe lists, sharing, and starter mode.
  • Email import can create and cancel events for the main group automatically.
  • Weekend-game helpers, handicaps, outings, and trip links are surfaced from the main experience.

Seniors Group

  • Public page is limited to golfer-level actions.
  • Full event and tee-time edits are intended to happen only from the Seniors admin page.
  • Roster-aware signup rules prevent duplicate assignment inside the same event.

Trips And Competitions

  • Tin Cup and Myrtle run as dedicated sub-sites with their own schedules and competition logic.
  • Tin Cup has its own standalone install manifest for mobile Add to Home Screen.
  • Trip pages can include scoring, winners, lodging, and practice-round workflows.

Live Platforms

Loading platform details...

All Operational Emails

Every non-empty operational address currently in use by runtime config or stored group profiles.

Group Contact Routing

Loading group routing...

How Manual Tee-Time Requests Work

  1. The calendar-level Request a Tee Time button posts to /api/request-club-time.
  2. The event-level Request Club Time button posts to /api/events/:id/request-extra-tee-time.
  3. The server looks up the active group profile, reads that group's club request email, and builds the CC list from the group's point-of-contact emails.
  4. The message is sent through Resend HTTP first. If that fails, the server falls back to smtp.resend.com.

What Happens When Events Change

  1. Creating an event from the calendar UI posts to /api/events and stores the event in MongoDB.
  2. Deleting or cancelling an event updates the event record or removes it, then sends a cancellation notice to subscribers.
  3. Player moves, adds, removals, and check-ins are recorded in the tee-time change log.
  4. When a brand-new event is created, subscriber notifications are sent for that group if notifications are enabled.
  5. Audit views now treat item creation as the first visible audit event where audit logs are exposed.

Operational Guardrails And Permissions

  1. Main and Seniors subscribers are group-scoped. Unsubscribing from one group does not remove the other.
  2. Seniors public tee-sheet pages are intentionally restricted to golfer-level changes only.
  3. Seniors admin users should use the dedicated Seniors admin page for event edits, tee-time deletes, and calendar maintenance.
  4. Group-scoped manifests, site titles, icons, and links are generated from the active site profile so installs and email links stay matched to the correct group.

How Email Import Works

  1. Club tee-time emails are forwarded to the Resend inbound address shown below.
  2. Resend posts an email.received webhook to /webhooks/resend.
  3. The app only accepts the known inbound recipient and a small allowed-sender list.
  4. The full email is fetched back from Resend, parsed, normalized, and either matched to an existing event or used to create or cancel one.
  5. When a new event is created from email, subscribers are notified the same way they are for a manual event create.

Mobile And PWA Behavior

  1. The public shell serves install prompts only in browser mode and hides them once the app is already installed.
  2. Main, Seniors, and Tin Cup pages can point to different manifests so Add to Home Screen produces the correct app identity.
  3. Standalone mode applies mobile-safe spacing, bottom-nav positioning, and group-aware titles and icons.
  4. Automatic refresh-on-resume and online recovery help the tee sheet recover cleanly on phones.

How The System Routes Imported Tee Time Emails

Loading inbound routing details...

How Subscriber Emails Work

  1. Subscribing on the public page creates or updates a subscriber record for the active group.
  2. BRS and Seniors keep separate subscriber lists, so the same email address can be subscribed to both groups at the same time.
  3. A confirmation email is sent from the configured Resend sender address with an unsubscribe link for that specific group subscription.
  4. Every bulk subscriber email gets a personalized unsubscribe link appended to the message, and using it only removes that one group subscription.
  5. Admin subscriber management uses the same group-scoped subscriber collection as the public subscribe flow.

Where Data Lives

Automatic Email Schedule

Loading scheduler details...

Testing And Safe Change Workflow

← Back to Tee Times