infra/.planning/REQUIREMENTS.md
2026-02-23 22:22:53 +00:00

4 KiB

Requirements: F1 Streaming Service

Defined: 2026-02-23 Core Value: When an F1 session is live, users open one URL and immediately see working streams — no hunting for links.

v1 Requirements

Requirements for initial release. Each maps to roadmap phases.

Schedule

  • SCHED-01: System auto-pulls F1 race calendar with all official sessions (FP1-3, Qualifying, Sprint, Race) from OpenF1/Jolpica API

Extraction

  • EXTR-01: Extractor framework with plugin-per-site pattern — each site is an independent extractor class
  • EXTR-02: Extractors bypass site protections (CSRF tokens, redirect chains, JS-computed URLs) to get final HLS/m3u8 source URLs
  • EXTR-03: Background polling scrapes configured sites periodically, caches results in-memory
  • EXTR-04: Auto-refresh expired CDN tokens mid-stream without interrupting playback
  • EXTR-05: Fallback ordering across multiple sources — rank by reliability, try next on failure

Proxy

  • PRXY-01: HLS proxy with full m3u8 URL rewriting at all playlist levels (master → variant → segments)
  • PRXY-02: CORS headers on all proxy endpoints for browser playback
  • PRXY-03: Chunked segment relay — stream bytes through, never buffer full segments in memory
  • PRXY-04: Quality selection — expose available stream variants, let users pick quality
  • PRXY-05: CDN token refresh loop to keep streams alive during 2+ hour sessions

Health

  • HLTH-01: Pre-display verification — check extracted streams are live and playable before showing to users
  • HLTH-02: Dead stream marking — tag broken/offline streams so users don't click them
  • HLTH-03: Quality metrics — track bitrate, buffering ratio, and latency per active stream

Frontend

  • FRNT-01: Stream picker — display available streams per live session, user selects one
  • FRNT-02: Embedded HLS player using hls.js for in-browser playback
  • FRNT-03: Multi-stream layout — watch multiple streams side by side (e.g., race feed + onboard camera)

Deployment

  • DEPL-01: K8s deployment via Terragrunt stack following existing infra patterns
  • DEPL-02: NFS storage for persistent data (schedule cache, extractor config)

v2 Requirements

Deferred to future release. Tracked but not in current roadmap.

Schedule

  • SCHED-02: Session countdown timer and live/upcoming/past status indicators
  • SCHED-03: Pre/post shows, press conferences in schedule (requires per-site detection)

Frontend

  • FRNT-04: Live timing overlay with sector times and positions

Out of Scope

Explicitly excluded. Documented to prevent scope creep.

Feature Reason
User authentication Security by obscurity, private URL
Community features (chat, comments) Just streams, not a social platform
DVR/recording Live viewing only
Mobile app Web-only
Official F1TV integration Unofficial re-streams only
Headless browser extraction Custom per-site extractors are lighter and more reliable

Traceability

Which phases cover which requirements. Updated during roadmap creation.

Requirement Phase Status
SCHED-01 Phase 2 Pending
EXTR-01 Phase 3 Pending
EXTR-02 Phase 3 Pending
EXTR-03 Phase 3 Pending
EXTR-04 Phase 6 Pending
EXTR-05 Phase 4 Pending
PRXY-01 Phase 5 Pending
PRXY-02 Phase 5 Pending
PRXY-03 Phase 5 Pending
PRXY-04 Phase 6 Pending
PRXY-05 Phase 6 Pending
HLTH-01 Phase 4 Pending
HLTH-02 Phase 4 Pending
HLTH-03 Phase 4 Pending
FRNT-01 Phase 7 Pending
FRNT-02 Phase 7 Pending
FRNT-03 Phase 8 Pending
DEPL-01 Phase 1 Pending
DEPL-02 Phase 1 Pending

Coverage:

  • v1 requirements: 19 total
  • Mapped to phases: 19
  • Unmapped: 0

Requirements defined: 2026-02-23 Last updated: 2026-02-23 after roadmap creation — all 19 requirements mapped