A web-based telemetry visualization tool for racing data, built with React and TypeScript.
- Interactive track map visualization using position data
- Real-time telemetry graphs showing:
- Speed
- Throttle
- Brake
- Gear
- Steering angle
- Session-based data navigation
- Lap-by-lap analysis
- Support for both live and historical data
- React 18
- TypeScript
- Material-UI
- Recharts for data visualization
- GraphQL for data fetching
- Webpack for building
- Node.js
- Yarn package manager
- Clone the repository
git clone [repository-url]
- Install dependencies
yarn install
Start the development server:
yarn start
Build for production:
yarn build:prod
Run production build locally:
yarn serve:prod
Build and run with Docker:
yarn docker:build
yarn docker:run
The application works with telemetry data points that include:
- Distance traveled
- Speed
- Throttle position
- Brake position
- Gear
- Steering angle
- Lap timing
- 3D position data (x, y, z coordinates)
- Vehicle rotation (yaw, pitch, roll)
The application provides two implementations of the telemetry service:
-
MockTelemetryService:
- Used for development and testing
- Provides simulated telemetry data
- Includes sample lap data for testing visualizations
-
ApiTelemetryService:
- Production service for real telemetry data
- Connects to REST endpoints
- Development endpoint:
/api
- Production endpoint:
https://b4mad.racing/api
GraphQL-based service for session and game management:
- Connects to telemetry backend (
telemetry.b4mad.racing:30050/graphql
) - Provides functionality to:
- List available games
- Fetch session information
- Retrieve detailed session data including lap times
- Query lap validity and timing data
The service automatically handles endpoint selection based on the environment:
- Development: Uses relative
/graphql
endpoint - Production: Connects to
http://telemetry.b4mad.racing:30050/graphql
yarn start
- Start development serveryarn build
- Build for productionyarn lint
- Run lintingyarn fetch-games
- Fetch available game sessionsyarn fetch-session
- Fetch specific session datayarn fetch-sessions
- Fetch all sessions