Create / join league
Goal
Commissioner creates a league; managers can browse discoverable leagues but join only through commissioner approval or an invite code.
Actors
Commissioner, Manager, signed-out visitor
Happy path
- A signed-in commissioner creates a league and opts it into discoverability when it should appear in the league list.
- A visitor browses discoverable leagues; browse may happen pre-auth.
- The visitor chooses one path: request to join (the request stays pending until commissioner approval) or enter an invite code.
- If the visitor is not signed in, soft-gate auth appears before the request-to-join or redeem-code membership write.
- The commissioner reviews pending requests and approves or declines them.
Path: Browse discoverable leagues (may be pre-auth for browse; auth required before request-to-join / redeem code) → Request to join (pending approval) or enter invite code → soft-gate auth if not signed in before membership write.
Auth soft-gate
Browse is allowed signed-out; create / request-join / redeem-code require auth.
Edge cases
- Invalid, expired, or already-used invite code
- Duplicate request or existing league membership
- Commissioner declines a pending request
- Discoverable league reaches its membership limit or is no longer accepting members
Open decisions
- Default list visibility for new leagues (listed vs unlisted) — see Open decisions.
- See also Open decisions / parking lot.