Skyderby
Turn GPS tracks from your skydives and BASE jumps into real flight analysis — plus worldwide rankings and competition scoring. Free to start.
Compare F1 drivers lap-by-lap and model tyre strategies using telemetry data
AI summary · README
Sports & fitnessPython · JavaScriptGitHub @Dev001112OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Formula 1 telemetry and analytics.
Lap-by-lap driver comparison, tyre strategy modelling, ML driver ratings, and an AI race analyst.
Live app ·
API
Most F1 sites give you tables. RaceDelta computes the differences between drivers and explains where they come from.
Root Directory race-delta-backend
Dockerfile Path ./Dockerfile
Health Check /api/healthRead the full README ↗Most F1 sites give you tables. RaceDelta computes the differences between drivers and explains where they come from.
Any two drivers, four ways:
| Mode | What it answers |
|---|---|
| Season | Head-to-head on the latest race, plus cumulative points across the year |
| Race | One Grand Prix, lap by lap |
| Track | Every visit to a single circuit |
| Conditions | Wet, dry, safety car, VSC, hot track (≥40 °C), cool track (<25 °C) |
Tyre degradation per compound, stint analysis, pit-stop timing, and a pace model that predicts lap times from stint state. Uses XGBoost when available and falls back to a linear model when it isn't.
Ask questions in plain language ("who's the strongest contender", "what's Antonelli's driving style"). The model answers through tool calls against the same endpoints the UI uses, and shows which tools it called. Runs on NVIDIA NIM or the Anthropic API; without a key it degrades to an offline intent mode.
Live standings, race calendar, session results, per-round analytics with weather telemetry, tyre stint timelines and position-change charts.
| Source | Used for |
|---|---|
| FastF1 | Lap timing, telemetry, weather, track status |
| OpenF1 | Live driver roster, sessions, meetings, stints |
| Jolpica | Standings and schedule — the successor to the retired Ergast API |
The deployed instance ships with a pre-ingested snapshot of the 2026 season: 12 races, 14,101 laps, 762 stints.
Backend
cd race-delta-backend
python -m venv venv && venv/Scripts/activate # Linux/macOS: source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # then fill in the values you need
python app.py # http://127.0.0.1:8000
The schema is created automatically at startup. To populate the database with a season:
python ingest_local.py
Frontend
cd race-delta-frontend
npm install
echo "VITE_API_BASE=http://127.0.0.1:8000" > .env.local
npm run dev # http://localhost:5173
Backend, all optional except in production:
| Variable | Default | Notes |
|---|---|---|
DATABASE_URL | sqlite:///racedelta.db | Postgres works too |
CORS_ORIGINS | * in dev, empty in production | Comma-separated, no trailing slashes. Production allows nothing until you set it. |
FLASK_ENV | development | production turns off debug and shortens standings computation |
NVIDIA_API_KEY / ANTHROPIC_API_KEY | — | Enables the AI Analyst; NVIDIA takes precedence |
ADMIN_TOKEN | — | Admin ingestion endpoints stay disabled unless set |
RACEDELTA_CACHE_DIR | .cache | Persistent JSON cache with stale-while-revalidate |
FASTF1_CACHE_DIR | ./fastf1_cache | FastF1's on-disk session cache |
Frontend:
| Variable | Notes |
|---|---|
VITE_API_BASE | Backend origin, no trailing slash. Baked in at build time — changing it requires a rebuild. |
Backend — Docker, on any container host. The included Dockerfile is sized for a 512 MB / 0.1 CPU instance: one gunicorn worker with eight threads, and the computed cache plus the season database baked into the image so a cold start serves real data without refetching.
Root Directory race-delta-backend
Dockerfile Path ./Dockerfile
Health Check /api/health
Frontend — any static host. Root directory race-delta-frontend, Vite preset. vercel.json supplies the SPA rewrite that React Router needs for deep links.
Refresh the shipped season data with:
cd race-delta-backend && python ingest_local.py
git add -f data/racedelta.db && git commit -m "chore: refresh season data"
Frontend — React 18, Vite, Tailwind, React Router, Recharts, Plotly, Chart.js, Framer Motion
Backend — Flask, SQLAlchemy, FastF1, pandas, NumPy, scikit-learn, XGBoost (optional), gunicorn
race-delta-backend/
app/
routes/ core, compare, lab, admin, openf1
services/ f1_service, ingestor, feature_store, strategy_lab,
driver_intelligence, race_analyst, compare_lab, cache_store
models.py 10 tables: races, race_sessions, laps, stints,
driver_race_features, drivers, constructors, ...
scripts/ Jolpica/Ergast standings and team lookups
data/ pre-ingested season database
.cache/ precomputed API responses shipped with the image
race-delta-frontend/
src/routes/ Home, Compare, Drivers, Teams, Lab, Strategy, Analyst, Race
src/components/ Navbar, cards, charts, comparison tables
src/api/client.js single source of truth for API access
/api/compare/track-map loads full telemetry and is memory-hungry; it needs more than 512 MB.