Skip to content

Roadmap

Current phase status, upcoming milestones, and long-term vision for the NHL Live platform.


Phase 1: Discord Server Infrastructure

Status: :white_check_mark: COMPLETE

All 32 NHL team Discord servers and the NHL Hub server are created and configured.

Completed:

  • 32 team servers + NHL Hub created
  • Roles, categories, and channels set up via scripts/setup_servers.py
  • Per-guild bot nicknames (e.g., "Flyers Live") and avatars (logo on team color)
  • Emojis copied from Colorado to 31 of 32 servers
  • Channels locked, rules posted, server descriptions set
  • Permanent invite links created for all teams
  • Hub guides posted ("Find Your Team", "Follow Other Teams")
  • Master spreadsheet populated (data/team_configs/NHL Discord Servers.xlsx)

Remaining items:

  • [ ] Finish Winnipeg emoji copy (re-run scripts/copy_emojis.py)
  • [ ] Audit Colorado server (delete 3 duplicate channels)
  • [ ] Copy channel descriptions from Colorado to all team servers
  • [ ] Set up Discord Community Onboarding on NHL Hub and team servers
  • [ ] Sync role permissions across all servers (Colorado as reference)

Phase 2: Bot Parameterization

Status: :white_check_mark: COMPLETE

All hardcoded Avalanche references replaced with config-driven values. Per-team discord_meta_{team_key}.json configs, TEAM_REGISTRY in config.py, and parameterized channel management all working.


Phase 3: Relay App Dynamic Theming

Status: :white_check_mark: COMPLETE

Token-driven team context (team, sport, branding) implemented. TEAM_BRANDING dict in cogs/relay.py provides dynamic color theming from branding.primary_color, secondary_color, and accent_color.

Remaining items:

  • [ ] Collect remaining 21 team wallpapers (11 of 32 collected)
  • [ ] EAS build + TestFlight submission with latest wallpapers

Phase 4: Stand Up Team Instances

Status: :material-arrow-right: NEXT

Each team needs its own running bot instance with team-specific config. Currently only Colorado is running in production.

Key work items:

  • Design instance architecture (shared VM with multiple processes vs. container orchestration; cost analysis for 32 concurrent instances on GCE)
  • Create per-team .env files (team-specific tokens or shared token with team context)
  • Create per-team discord_meta.json from existing data/team_configs/ files
  • Systemd service template for multi-instance deployment (nhl-live@{team}.service)
  • Deployment automation (script to deploy + restart specific team instances)
  • Monitoring and health checks across all instances
  • Per-team channel rename logic and news feeds
  • Test with 2-3 teams before full 32-team rollout

Phase 5: Bot-Mediated Communications

Status: Future

All member-to-admin communication routes through the bot, keeping the owner less discoverable.

  • /feedback command routing to private admin channel
  • /contact command for bot-mediated DMs to admins
  • Private admin channel per team server
  • Bot-mediated DM responses (admin replies via bot)
  • Per-team admin assignment system
  • Rate limiting on feedback/contact

Phase 6: Access Control & Monetization

Status: Future

  • Subscription tiers and pricing (Free, Fantasy Member, Full Member, Scout)
  • Payment integration (Stripe, Discord premium, or custom)
  • Automated role assignment on payment confirmation
  • Subscription management (upgrades, downgrades, cancellations)
  • Trial period system and onboarding flow

Phase 7: Multi-Sport Expansion

Status: Future

  • MLB bot codebase (separate repo mlb-live-bot, Phase 1 complete)
  • MLS bot codebase (separate repo mls-live-bot, Phase 3 complete)
  • FIFA bot codebase (separate repo fifa-live-bot, Phase 1 complete)
  • Sport-agnostic relay message format (already defined in cross-league standards)
  • App Store listing update for multi-sport
  • MLB/MLS team Discord servers + hubs

Ongoing Maintenance

  • [x] Keep privacy policy up to date (relay-app/privacy-policy.md)
  • [x] Update developer notes with new architectural decisions
  • [x] Review and update business model canvas
  • [ ] Keep App Store description current (relay-app/app-store-listing.md)
  • [ ] Re-capture screenshots after significant UI changes
  • [ ] Update scout guide in OnboardingScreen when UI behavior changes
  • [ ] Keep master spreadsheet in sync when servers change
  • [ ] Push privacy policy updates to GitHub Pages