Skip to content

rishigupta2004/TelemetryX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TelemetryX - Formula 1 Telemetry Dashboard

Formula 1 telemetry. Race intelligence. Broadcast-grade.

Stars Tests: 164 License: MIT Python 3.11+ Electron


What it does

Timing Tower

Live position classification with gap/interval calculations, sector times, tyre compound tracking, DRS indicators, and position swap animations. Real-time updates at sub-second latency.

Timing Tower

Multi-Driver Telemetry

Compare up to 4 drivers simultaneously with team color coding, mini-sector colouring, lap-by-lap traces for speed, throttle, brake, gear, RPM, and DRS.

Telemetry Overlay

Monte Carlo Strategy Simulation

Two-phase rendering (400 instant → 3000 async), 30+ circuit-specific pit stop models, SC/VSC probability analysis, backtest RMSE panel, and JSON export.

Strategy Simulation


Quick start (no Docker)

git clone https://github.com/telemetryx/telemetryx.git && cd TelemetryX && ./start.sh

That's it. The app starts against your local backend using DuckDB (no Docker).

Local mode defaults:

  • Real backend/API calls (no mock fallback)
  • DuckDB/parquet data source
  • Zero Docker requirement

Manual local run (no Docker):

# 1. Configure environment
cp .env.example .env
# Optional: edit .env

# 2. Start backend
cd backend && ./start_local.sh

# 3. Start frontend
cd frontend-electron && npm run dev

Optional Docker mode is for containerized deployment/testing, not required for normal app usage.


Features

Click to expand full feature list (80+ items)

Views

  • Timing Tower — Live position classification, gaps, intervals, sector times, tyre compound, DRS indicator, position swap animations
  • Telemetry — Multi-driver comparison (up to 4), speed/throttle/brake/gear/RPM traces, mini-sector colouring, lap selector per driver
  • Strategy — Pit window calculator, tyre degradation curves, undercut/overcut predictor, stint planning
  • Simulation — Monte Carlo with 30+ circuit models, SC/VSC probability, backtest RMSE, JSON export
  • Track Map — 2.5D animated circuit, 38 real circuits from GPS, CSS perspective with tilt sliders, clean HUD mode
  • Broadcast View — Production-ready display for screen recording/streaming

Data & Analysis

  • Race pace analysis per driver/team
  • Season standings (drivers & constructors)
  • Driver clustering by performance
  • Circuit insights and facts
  • FIA documents viewer (stewards decisions, technical directives)
  • Tyre stint analysis and degradation tracking
  • Undercut/overcut effectiveness calculator
  • Position gain/loss analysis

Performance

  • 90fps playback — RAF-based timing with 6ms update interval
  • Lazy loading — React.lazy + Suspense for all views
  • Code splitting — Separate vendor chunks (React, ECharts, uPlot, Lucide, Zustand)
  • Web Workers — Telemetry processing and car position interpolation off main thread
  • API caching — Client-side response cache with 120s TTL
  • Initial load bundles React (~716KB vendor chunk, cached after first run). App startup chunk is 78KB.

UI/UX

  • Welcome screen with animated progress
  • Glass morphism panels
  • Micro-animations (modal, sidebar, tooltip transitions)
  • Dark theme optimized for analysis
  • Responsive layout (ultrawide supported)
  • Team color coding throughout
  • DNF/PIT/OUT status badges
  • FL (Fastest Lap) badge
  • Tyre chip visualization

Backend

  • FastAPI with Pydantic v2
  • DuckDB for embedded analytics
  • Global error handler
  • GZip compression
  • WebSocket support for real-time
  • Background task processing

Data Sources

  • FastF1 (2018+ live timing, telemetry, session metadata)
  • Ergast (historical results 2000–2017)
  • OpenF1 WebSocket (real-time car positions)
  • Jolpica-F1 (race calendar, driver info)

Architecture

See /docs/architecture.md for detailed system design including:

  • Electron main process (GPU rasterization, window state, CSP)
  • React 19 renderer (Zustand stores, Web Workers, Canvas 2D)
  • FastAPI + DuckDB backend (15+ routers, LRU cache, WebSocket)
  • Data pipeline (FastF1, Ergast, OpenF1)

Contributing

Contributions welcome! Please read our contributing guidelines before submitting PRs.

Development Setup

# Clone and setup
git clone https://github.com/telemetryx/telemetryx.git
cd TelemetryX

# Backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Frontend
cd ../frontend-electron
npm install

# Run frontend
npm run dev

Running Tests

# Unified backend + frontend suite
./scripts/test_suite.sh

Quality Gates

# TypeScript check
cd frontend-electron && npx tsc --noEmit

# Full release validation
./scripts/run_desktop_local.sh --gate-only --release-gate

Tech Stack

Layer Technology
Desktop Electron 40, electron-vite 5
Frontend React 19, TypeScript 5.9, Vite 7, Tailwind CSS 4
State Zustand 5
Charts ECharts 6, uPlot 1.6, Canvas 2D
Backend Python, FastAPI, DuckDB, Uvicorn
Data FastF1 (2018+), Ergast (2000–2017), OpenF1

License

MIT License — see LICENSE for details.

TelemetryX is a fan-driven analytics project. It is not affiliated with Formula 1, FIA, or any team.


Support

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors