aba2c69416da6867621b31bd776be084f6ed0559
The findings of the Debian host (OS packages and applications found in the root filesystem) and of the container images in the cluster were mixed in one flat table. They are now two prominent categories: a card each with its own severity split and target count, acting as the primary selector, and a table that adapts to the selection. Host findings show the package source reported by the scanner (debian, gobinary, node-pkg …) instead of the target, container findings show the image. Backend: findings carry the scanner's package source, the list endpoint takes ?scope=host|container, and the targets endpoint reports each target with its category and open count. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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:
- List the unit, integration and UI tests the feature needs.
- Write them so they fail (
backend/crates/*/src/**unit tests,backend/crates/api/tests/integration tests,frontend/src/**/*.test.tsandfrontend/e2e/*.spec.ts). - Implement the smallest code that makes them pass, then refactor.
- 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
Languages
Rust
72.1%
Vue
15.5%
TypeScript
11.5%
Shell
0.7%
Makefile
0.1%