Data
Data sources & CDN layout
Sources & authority
| API | Use | Authority |
|---|---|---|
| Jolpica/Ergast | Standings, schedules, results, laps, pit stops | Authoritative for identity, results, standings, schedule, round numbering. Community mirror — proxy-only, never redistributed to R2. |
| OpenF1 | Live timing, weather, team radio, headshots, starting grid, overtakes | Authoritative for session resources it uniquely provides (2023+). Live position/car data stays on the proxy; only post-session snapshots are warehoused. |
| FastF1 | Telemetry, sectors, compounds, stints | Authoritative only for sector/compound/stint/ms-precision summaries. Never overwrites Ergast results. |
DNF rule (shared by ingest and frontend): status='Finished' or matches +N Lap(s) ⇒ classified, else DNF.
R2 / CDN layout (cdn.f1datastop.com)
Default host constant in analysis/cdn_schedule.py; override with BLOB_PUBLIC_BASE. Path convention:
charts/<season>/<round>-<slug>/<session>/<format>/<chart>[__<DRIVERKEY>].png
telemetry/… circuits/… replays/… weather/… season JSON (data_export.py)
- Formats:
landscape+twitter(16:9, 3200×1800),instagram(4:5),story(9:16). The three comprehensive posters render landscape + twitter + story; the app falls back to landscape where instagram is absent. - Driver-picked charts append
__<DRIVERKEY>(upper, sorted,--joined codes); social variants suffix_twitter/_instagram/_storyonchart_type. - Index:
analysis_chartstable, unique on(season, round, session, chart_type). Indexes refreshed after every cron export viaindex_export.py.
Chart pipeline (analysis/)
generate.py renders branded Deep Dive posters (Deep Carbon palette, race-country flag, @F1DataStop) from FastF1. Six comprehensive boards (race_analysis, driver_compare, season_scorecard, championship, constructors, circuit_history) plus 18 single-topic charts in the CHARTS registry. Local test writes to out/:
cd analysis
./venv/bin/python generate.py --season 2025 --round 13 --session R \
--only race_analysis --no-upload --format landscape
season_scorecard is warehouse-backed — it needs SUPABASE_URL + a read (anon) key even with --no-upload. Full flag reference: analysis/POSTERS.md. Pipeline overview: analysis/README.md.