Skip to content

The operator UI

minmcs-ui is a Vue 3 + Pinia + vue-router operator dashboard, built on a Bootstrap 5 admin template (“quantum-vue”) and adapted for MCS use. It talks to the API service over REST, and refreshes reactively on the /ws broadcast rather than polling.

Structure

  • src/components/minmcs/ — the domain components. Five of them fetch data directly from the API and each defines its own API constant from VITE_MINMCS_API, rather than sharing a client module: TmDisplaySubsystems, TmPackets, TcManualStack, TcHistory, OnboardTime. The other two, PanelStatus and PanelSearch, are purely presentational — props and emits only, no API calls of their own.
  • src/views/ — one view per route: TelemetryPackets, TelemetryParameters, TelemetryContainers, TelecommandsPackets, TelecommandsCommands, TelecommandsContainers, SystemConfiguration, SystemModel, Links, plus the template’s default View1 and a catch-all PageError.
  • src/router/index.ts — a flat, static route list (no groups, no guards), with each view lazy-loaded.
  • Everything else is template scaffolding, not MCS-specific: src/components/app/ (header, sidebar, footer chrome), src/components/bootstrap/ (thin Card wrappers), src/stores/*.ts (Pinia stores for UI chrome state — theme, sidebar collapse, nav menu, not domain data), src/composables/, and src/scss/.

There’s no dedicated domain Pinia store. TM/TC data is fetched directly by the minmcs/ components instead of being centralized in a store.

Commands

$ npm install
$ npm run dev          # Vite dev server, host exposed
$ npm run build         # vue-tsc --noEmit && vite build
$ npm run lint          # eslint --fix
$ npm run typecheck     # vue-tsc --noEmit

VITE_MINMCS_API sets the backend base URL at build/dev time (default http://localhost:9300). Under compose it comes from the root .env and is baked into the bundle at image build time, so changing it needs docker compose up --build — see Configuration. There’s no test tooling configured yet — no test script in package.json, and no vitest or Cypress config anywhere in the repo.

Last updated on