SCAN is a k9s-like visualizer that renders Kubernetes as a living galaxy. This repo contains the v1 monorepo scaffolding:
controller(Go): Watches the K8s API using informers and publishes compact deltas to NATS JetStream.backend(Go): Consumes deltas, maintains hot state, snapshots to Postgres, and serves the HTTP/WS API.web(TypeScript/React/Three.js): Renders the scene, initializing from/snapshotand applying live deltas via/stream.migrations: SQL migrations for Postgres state.deploy/dev: Local developmentdocker-compose(NATS, Postgres, Backend).charts: Helm charts (to be filled in later phases).
IMPORTANT: THIS IS HEAVY AND MAY REQUIRE DECENT AMOUNT OF GPU USAGE FOR THE WEBUI. TRY THIS AT YOUR OWN RISK! (at least until this eventually gets rebranded to CAN: Slow Cluster Atlas Navigator)
Prereqs: Go 1.22+, Node 20+, Docker.
- Backend
cd backend && go mod tidy && go build ./...
- Web
cd web && npm install --no-fund --no-audit && npm run build
- Dev compose (NATS, Postgres, Backend):
cd deploy/dev && docker compose up --build
run bash ./scripts/quick-dev.sh for a quick demo setup.
TODO:
- Change 'ksa' to 'scan: slow cluster atlas navigation'
- Fix WS drops.
- don't know what could have caused this, i think it was when the log streaming was implemented, at earliest.
- look into the log stream and see if it can affect the rest.
- Fix UI reseting on web connection drop+gain so items keep moving
- ensure 'Backend: {status}' reflects dropped statuses
- Resolve 'error: error parsing STDIN: error converting YAML to JSON: yaml: line 22: mapping values are not allowed in this context' in quick dev script