Start a Ride

A participant signals they are beginning the ride, activating navigation and intercom for themselves and other riders.

Who Can Do This

Any participant with a yes or maybe RSVP status.

Steps

  1. Open the ride within the allowed start window.
  2. Tap Start Ride.
  3. Validations run (time window, RSVP status, location permission).
  4. Firestore is updated (ride status, participant status if maybeyes).
  5. Free-tier quota slot is consumed (free users only, first start of this ride).
  6. Navigation becomes active. Intercom can be joined separately from the navigation screen.

Rules

  • The ride can only be started up to 2 hours before the scheduled start time and before the scheduled end time. Start is blocked after the end time passes.
  • If no participant has started the ride by the scheduled start time, the ride status switches to on-going automatically.
  • Any yes or maybe participant can start the ride — it is not restricted to the creator or admins.
  • Starting the ride automatically upgrades the participant's status from maybe to yes. This never affects maxRidersmaybe already occupies a slot, so the upgrade is always safe.
  • For free users, one quota slot is consumed on the first Start of a given ride. Quota is tracked at the user + ride level — restarting on the same or a different device never consumes additional quota. If navigation fails to launch after quota is consumed, tapping Start again resumes without consuming another slot. A free user with zero quota remaining can still start the ride — they navigate as Essential tier with limited features (no traffic overlay, no other riders visible on map). Start is never blocked solely due to quota being exhausted. See Access Policy.
  • Multiple participants can independently "start" the same ride; each one activates their own navigation session.
  • The first participant to start the ride changes the ride status from upcoming to on-going. Subsequent participants starting the ride do not change the status further.

What Happens Next

The ride status changes to on-going when the first participant starts it. Navigation becomes active for the participant. They can join the intercom channel separately from the navigation screen. When the ride's end time passes, all active navigation and intercom sessions end automatically.

Failure Cases

  • Too early: the ride cannot be started more than 2 hours before the scheduled start time.
  • Too late: the ride cannot be started after the scheduled end time has passed.
  • Wrong RSVP status: participants with no or pending (unapproved) status cannot start the ride. Approval must be granted before Start is available.
  • Location permission denied: precise location access must be granted before Start.

Status: partially-live. 2-hour start window enforcement and maybe→yes status upgrade are complete on both sides. Missing: free-user quota consumption not tracked (quota is never decremented); Essential-tier fallback when quota is exhausted not implemented; location permission pre-flight check absent (permission is checked after navigation starts, not before).