# Fleet Kiosk App A cyber sci-fi **spaceship monitoring & control terminal** — the page the diskless kiosk (weston + Chromium) loads at boot. Replaces the old single static `serving/http/kiosk/index.html` test page. Built with **Svelte 5** + **Tailwind CSS v4** + **Vite**, served as a static bundle from its own nginx, and reverse-proxied at `/kiosk/` by the main serving nginx (`../http/default.conf`). Fully self-contained — no CDNs or web fonts — so it renders on the air-gapped boot LAN (the stack's dnsmasq sinkholes external call-home). ## Pages Top navbar with five views, each with dummy telemetry: - **BRIDGE** — overview tiles, systems status, subsystem load, event log - **REACTOR** — core output/temp/containment, power distribution, fuel cells - **NAVIGATION** — heading/velocity, tactical radar plot, flight plan, FTL drive - **LIFE SUPPORT** — atmosphere mix, per-deck environment, recyclers - **COMMS** — channels, signal bars, message traffic Routing is hash-based (`#/power`, `#/nav`, …) so deep links stay client-side and the proxy needs no SPA-fallback rewrite. A shared 1 Hz clock and small random-walk "jitter" helpers make the static data feel live. ## Develop ```bash npm install npm run dev # http://localhost:5173/kiosk/ ``` ## Build the container It builds as part of the serving stack: ```bash cd .. # serving/ docker compose build kiosk docker compose up -d # main nginx serves it at http://${SERVER_IP}/kiosk/ (kiosk_url default) ``` The container publishes on `127.0.0.1:${KIOSK_APP_PORT:-8088}`; the host-network main nginx proxies `/kiosk/` to it. To point the diskless kiosk here, keep the Packer `kiosk_url=http://boot.fleet.lab/kiosk/` default (resolved to the serving host by the stack's dnsmasq). ## Replacing the dummy data All fictional telemetry lives in [src/lib/data.js](src/lib/data.js). A future runtime agent could swap these constants for a `fetch()` to a fleet API; the components only read from that module.