A real-time telemetry dashboard for the UBC Solar car. Streams live sensors (speed, voltage, power, GPS, …) from the Sunbeam API and renders them as numbers, plots, a color-coded map, per-lap statistics, and calculations.
Built with React + TypeScript, bundled with Vite, wrapped in an Electron desktop shell.
- Node.js v20+ (comes with npm)
git clone https://github.com/UBC-Solar/sunglasses.git
cd sunglasses
npm install
npm run electron:devnpm run dev also works — browser-only and faster for development (the same
code, just without the Electron window).
All data comes from Sunbeam — there is no bundled simulator. On launch the app lists the backend's recording events; pick one in the header dropdown and it fetches that event's signal manifest and opens a live stream. No signal values render until an event is selected.
Sunbeam's HTTP API is expected on port 8000: the Vite dev server proxies
/events there (vite.config.ts), so API_BASE_URL stays empty in dev.
Packaged Electron builds set VITE_API_BASE (e.g. http://localhost:8000) at
build time instead.
| Document | What it covers |
|---|---|
| docs/overview.md | App structure and the React/Electron/TS split |
| docs/telemetry.md | The telemetry layer (store, API client, mapping) |
| docs/data_flow.md | How a sample travels from the car to the screen |
| docs/tabs.md | The six tabs |
| docs/components.md | Shared components |
| docs/react_patterns.md | React state concepts used here |
| docs/sunbeam_api.md | The backend API contract |
| docs/development.md | Commands, config, and gotchas |