The operator UI for the Nova ground station: live engine and flight-computer data, the interactive P&ID, configuration and analysis tools, in any browser. Built with Next.js, React and Chakra UI v3. It talks only to the NovaOps backend, which checks every command before anything moves.
Important
This is a control surface. "No data" always renders as "—", never a made-up
0, so an operator can tell stale from zero. Keep it that way
(style guide).
src/
├── app/ pages: engine, flight, devices, console, config, tools, settings
├── components/ primitives/ (shared), shell/ (app frame), and one folder per page
├── hooks/ data hooks (React Query, store)
└── lib/ no-React logic: api/ (REST), ws/ (WebSocket), store/, theme/, ...
public/ fonts, logos
tools/ backend_API.http: sample requests for the backend
Where new code goes: organization guide.
Node.js 20+, and a running backend (see the backend's README).
npm install
cp .env.example .env.local.env.local points at the backend. When the UI and backend share a host, the
URLs can be left unset; they're derived from the page's address.
| Variable | Default in .env.example |
|---|---|
NEXT_PUBLIC_NOVA_API_BASE_URL |
http://localhost:8000 |
NEXT_PUBLIC_NOVA_WS_BASE_URL |
ws://localhost:8000 |
NEXT_PUBLIC_NOVA_FAKE_SIGNAL |
0 (dev only: fake signal strength) |
npm run dev # development, http://localhost:3000
npm run build && npm run start # productionCheck a change the way CI does:
npm run typecheck
npm run buildNote
On the ground station the UI runs as a Windows service managed by
Nova-Collected's ops/Nova.ps1.
| Symptom | Fix |
|---|---|
| Every value shows "—" | The backend isn't reachable, or nothing is publishing. Check .env.local and that the backend and a simulator are running |
npm run build fails fetching fonts |
The build downloads Inter and JetBrains Mono from Google Fonts; it needs internet |
npm run lint hangs |
There's no ESLint config yet, so it waits for input. Don't run it in scripts |
| Commands do nothing | Your session is a viewer. Take a role in Settings |
More: Nova SUPPORT.md.
| To... | Read |
|---|---|
| Use the UI as an operator | Operator guide |
| Look up the backend API | Backend API, or /docs on a running backend |
| Follow code style | Style guide |
| See what changed in each release | CHANGELOG.md |
| Contribute | CONTRIBUTING.md |
| See the whole system | Nova-Collected |