# Roadmap What exists today is the MVP: run one tournament on one or two courts from a phone, with a QR landing page that follows the day and a live board. The list below is in rough priority order; each item is independent. ## Next - **SMS alerts (Twilio).** The engine already emits `up_now`, `on_deck`, and `broadcast` events with the team ids and message text; a sender that subscribes to `Tournament.on()` and posts to Twilio when `TWILIO_*` env vars are set is a small addition. Captains opt in at registration ("text me when we're up"). - **Web Push.** VAPID keys generated at first start, a service worker on the team page, subscriptions stored per team. Works on Android in any browser and on iOS when the page is added to the home screen. - **Captain-submitted scores.** Winning captain enters the score from the team page, losing captain confirms with one tap, organizer only intervenes on disputes. Needs a per-team write token (the existing code plus a signed nonce) and a "pending confirmation" match status. - **Co-organizers with roles.** Invite links; a `scorekeeper` role that can enter scores but not change the bracket or roster. - **Run a real event and fix what it teaches.** The simulator is not a beach in September. ## Later - **Divisions** (competitive / rec) inside one tournament, each with its own pools and bracket, sharing the court queue. - **Swiss pairing** for stage 1 when there are too many teams for pools and too few hours for a full round robin. - **Timed sets** (e.g. 12-minute sets) as an alternative to point targets, for keeping a large field on schedule. - **Season leaderboard** across tournaments: wins, points, streaks; the thing that brings people back. Build as a read model over the `events` table. - **Player identities** that persist across tournaments so individual stats are possible (currently a player is just a name on a team). - **Templates**: save a format/rules setup and reuse it. - **Sponsor strip and photos** on the public page. - **Multi-instance deployment**: replace the in-memory `Registry` with a shared store and pub/sub if one process is ever not enough (it will be enough for a very long time). ## Non-goals Payments, waivers, and league scheduling across weeks. Plenty of products do those; Courtside is the desk for the day itself.