A real-time rocket launch telemetry dashboard. A Rust backend simulates a full launch sequence and streams live sensor data over a WebSocket, while a SvelteKit frontend visualizes it as live gauges and a rolling chart.
The telemetry is simulated — no real hardware required. The backend plays through a scripted launch, generating realistic per-stage sensor values with random noise.
┌─────────────────┐ WebSocket (JSON @ 10 Hz) ┌──────────────────┐
│ Rust / Axum │ ─────────────────────────► │ SvelteKit UI │
│ backend :3000 │ ws://.../ws │ gauges + chart │
└─────────────────┘ └──────────────────┘
On connection, the backend steps through the launch stages below, emitting a telemetry reading every 100 ms. The frontend keeps a rolling window of the last 100 readings, renders live metric cards (with warning/critical thresholds), and draws chamber pressure over time on a canvas.
Each reading contains:
| Metric | Unit | Description |
|---|---|---|
| Chamber Pressure | psi | Combustion chamber pressure |
| Thrust | kN | Engine thrust |
| Flow Rate | kg/s | Propellant flow rate |
| Temperature | °C | Engine temperature |
| Vibration | g | Structural vibration |
The simulated sequence runs through seven stages (~25 s total):
- Pre-Ignition (3s)
- Ignition (2s)
- Full Thrust (8s)
- Max-Q (4s) — point of maximum aerodynamic stress
- Throttle Down (3s)
- Throttle Up (3s)
- MECO (2s) — Main Engine Cutoff
Backend: Rust · Axum · Tokio · Serde Frontend: SvelteKit · Svelte 5 · TypeScript · Vite
cd backend
cargo runThe server starts on http://0.0.0.0:3000 with:
GET /health— health checkGET /ws— telemetry WebSocket stream
cd frontend
npm install
npm run devOpen the URL Vite prints (default http://localhost:5173). The dashboard connects to the backend WebSocket automatically and starts streaming once the backend is running.
.
├── backend/ # Rust + Axum WebSocket server
│ └── src/
│ └── main.rs # server, telemetry generation, launch sequence
└── frontend/ # SvelteKit dashboard
└── src/
├── routes/ # main page (gauges + chart)
├── components/ # chart component
└── lib/ # websocket + rendering helpers
- WebGPU-based chart rendering
- Charts for all metrics (not just chamber pressure)
- Configurable / restartable launch sequence