29 lines
2.8 KiB
Markdown
29 lines
2.8 KiB
Markdown
# SoftVisor Infrastructure Monitoring System
|
|
|
|
In the following document, the project description is elaborated along with engineering constraints.
|
|
|
|
# Goal of the project
|
|
SoftVisor GmbH operates a root-server running with Debian on it. On the server runs a Kubernets cluster where Gitea is installed for source control of the company's projects. We want to monitor the server in a way that we always know a software version drift, if vulnerabilities exist and to handle backups. On one hand we want to backup the applications running on kubernets. This means, the gitea and postgres data shall be backuped separately, not the entire cluster.
|
|
|
|
# How does the application look like?
|
|
We want you to develop a web app with modern authentication. WIth the web app we want to see what applications are installed on Debian, we want to manage the kubernetes cluster and we want to manage backup strategies.
|
|
|
|
# Use cases
|
|
In the following important use cases are described:
|
|
|
|
1. Update Management of the OS and packages/applications
|
|
As a user I want to see the current OS version and all the packages and applications that are installed on it. For every package, application and even the OS we want to update the version.
|
|
2. Vulnerability Management
|
|
As a user I want to see current vulnerabilities of packages, applications, pods on kubernetes, images and OS. I want to get notified by E-Mail if new vulnerabilities are detected.
|
|
3. Backup Strategy Management
|
|
As a user I want to create backup strategies. A backup strategy consists of the application/data/kubernetes volume/image/etc.pp to be saved, the interval and the remote target where the backup should be stored. The remote target may be a samba server or FTP.
|
|
4. User management and authentification
|
|
As an admin, I want to create and manage users who have access to the application.
|
|
|
|
# Engineering constraints
|
|
Please use Rust as backend and webserver, Vue.js and Tailwind CSS as Frontend. Please use clean code techniques and use clean architecture patterns. Do not over-engineer, be pragmatic. Write short and consistend code. For every feature requested, commit and push the changes you did. Always make a plan and decide which options is the best to choose from in order to develop a feature. If you are unsure, please ask immediately for clarification. Use modern authentification techniques, and if required modern encryption.
|
|
Test-driven development is mandatory: when planning a new feature, plan and implement the tests BEFORE the feature implementation. Tests means unit tests, integration tests where applicable and UI tests. Write the test cases first (red), then implement the feature until they pass (green), then refactor.
|
|
|
|
# Server access
|
|
The Debian root server is reachable via the SSH config alias `softvisor` (`ssh softvisor`). Use it to inspect the host, the Kubernetes cluster and to deploy/test the application on the real target.
|