Dennis Nemec b984cc8c9f Link image findings to their workloads and suggest a fixing image update
Container findings now name the workloads that run the image and link
into the Kubernetes view, which highlights them. An update check asks the
registry for newer tags of the same variant, scans the newest one and
records which of the open findings are gone in it. The image row then
shows the candidate tag, how many findings it fixes and how many remain,
marks those CVEs in the expanded list, and offers to roll every workload
over to it. The check runs as a job, nightly for all running images or on
demand for one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 20:19:12 +02:00

SoftVisor Infrastructure Monitoring System

Web application to monitor and manage the SoftVisor Debian root server: OS/package updates, vulnerabilities, backups of the Gitea/Postgres workloads on microk8s, and user management. See ROADMAP.md for the plan and CLAUDE.md for the constraints.

Stack

  • Backend: Rust, axum, sqlx (SQLite), clean architecture in four crates (backend/crates/*)
  • Frontend: Vue 3 + TypeScript, Vite, Tailwind CSS, Pinia, Vue Router (frontend/)
  • Tests: cargo test (unit + integration), Vitest (components/stores), Playwright (UI)

Development

Requirements: Rust stable, Node 22+, make.

cp .env.example backend/.env      # then edit JWT_SECRET and the bootstrap admin
cd frontend && npm ci && npx playwright install chromium && cd ..
make dev                          # backend on :8080, frontend on :5173 (proxies /api)
Command What it does
make test backend, frontend unit and Playwright UI tests
make test-backend cargo test --workspace
make test-frontend Vitest
make test-ui Playwright (starts backend with in-memory DB + Vite)
make lint rustfmt, clippy, eslint, prettier, vue-tsc
make build production frontend build + release binary

TDD workflow

Every feature starts with its tests:

  1. List the unit, integration and UI tests the feature needs.
  2. Write them so they fail (backend/crates/*/src/** unit tests, backend/crates/api/tests/ integration tests, frontend/src/**/*.test.ts and frontend/e2e/*.spec.ts).
  3. Implement the smallest code that makes them pass, then refactor.
  4. Commit and push.

Deployment

See docs/install.md (release build, deploy/install.sh, systemd unit) and docs/restore.md for restoring backups. docs/architecture.md describes the layers.

First admin

On start the backend creates an admin user from BOOTSTRAP_ADMIN_EMAIL / BOOTSTRAP_ADMIN_PASSWORD if no user exists yet.

Description
No description provided
Readme 1.2 MiB
Languages
Rust 72.1%
Vue 15.5%
TypeScript 11.5%
Shell 0.7%
Makefile 0.1%