# angusrausch/mini-projects architecture

> Architecture diagram of the GitHub repository angusrausch/mini-projects, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/angusrausch/mini-projects
- Repository: https://github.com/angusrausch/mini-projects

## Overview

This repository is a collection of independent personal utilities, not one integrated application. Its main user workflows are running DNS or HTTP load tests, processing server logs, managing SSH configuration, and selecting files for backup; it also includes service-status containers and shell prompt configurations. Paths for several projects are supported by the tree and README, but their implementations were not sampled, so those branches show only documented behavior and omit uncertain internal wiring.

Main entry points: [`docker_vms/tinystatus/tinystatus.py`](https://github.com/angusrausch/mini-projects/blob/main/docker_vms/tinystatus/tinystatus.py) (TinyStatus monitor), [`backerupperer/backup.sh`](https://github.com/angusrausch/mini-projects/blob/main/backerupperer/backup.sh) (Backup runner), [`site_tester/src/main.rs`](https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/main.rs) (Site Tester entry), [`ssh_helper.py`](https://github.com/angusrausch/mini-projects/blob/main/ssh_helper.py) (SSH helper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_testing["Load testing"]
  node_nscli["DNS CLI<br/>[cli_request.cpp]"]
  node_nsrunner["DNS workload<br/>[request.cpp]"]
  node_py_dns["Python DNS tester<br/>[ns-spam.py]"]
  node_site_entry["Site Tester entry<br/>[main.rs]"]
  node_site_cli["Site Tester CLI<br/>[cli.rs]"]
  node_site_gui["Site Tester GUI<br/>[gui.rs]"]
  node_site_runtime["HTTP request engine<br/>[lib.rs]"]
  node_py_site["Python Site Tester<br/>[site-tester.py]"]
end

subgraph group_admin["Admin utilities"]
  node_log_parser["Log parser<br/>[log_parser.py]"]
  node_ssh_helper["SSH helper<br/>[ssh_helper.py]"]
  node_backup_script["Backup runner<br/>[backup.sh]"]
  node_backup_config["Backup rules<br/>[backup.yaml]"]
end

subgraph group_monitoring["Status services"]
  node_microstatus["Microstatus"]
  node_tinystatus["TinyStatus monitor<br/>[tinystatus.py]"]
  node_checks["Check definitions"]
  node_history[("Status history<br/>[tinystatus.py]")]
  node_status_page["Generated status page"]
  node_pihole["Pi-hole container"]
  node_bastion["Bastion container"]
end

subgraph group_shell["Shell customization"]
  node_shell_config["Prompt configs"]
end

node_user(("Operator"))
node_dns(("DNS server"))
node_web_target(("Website"))
node_server_logs["Server log files"]
node_ssh_config["SSH config"]
node_ssh_hosts(("SSH hosts"))
node_backup_files["Selected files"]
node_backup_dest["Backup locations"]
node_shell_user(("Shell user"))
node_status_targets(("Monitored services"))

node_user -->|"runs CLI"| node_nscli
node_nscli -->|"starts workload"| node_nsrunner
node_nsrunner -->|"sends DNS queries"| node_dns
node_user -->|"runs tester"| node_py_dns
node_py_dns -->|"runs nslookup"| node_dns
node_user -->|"launches"| node_site_entry
node_site_entry -->|"dispatches CLI"| node_site_cli
node_site_entry -->|"dispatches GUI"| node_site_gui
node_site_cli -->|"runs requests"| node_site_runtime
node_site_gui -->|"runs requests"| node_site_runtime
node_site_runtime -->|"sends HTTP requests"| node_web_target
node_user -->|"runs tester"| node_py_site
node_py_site -->|"sends HTTP requests"| node_web_target
node_user -->|"selects logs"| node_log_parser
node_server_logs -->|"reads"| node_log_parser
node_user -->|"requests SSH tasks"| node_ssh_helper
node_ssh_helper -->|"reads and edits"| node_ssh_config
node_ssh_helper -->|"copies keys or config"| node_ssh_hosts
node_user -->|"runs backup"| node_backup_script
node_backup_script -->|"reads rules"| node_backup_config
node_backup_script -->|"selects files"| node_backup_files
node_backup_script -->|"syncs with rsync"| node_backup_dest
node_shell_user -->|"loads settings"| node_shell_config
node_user -.->|"runs service checks"| node_microstatus
node_user -.->|"runs monitor"| node_tinystatus
node_tinystatus -->|"reads checks"| node_checks
node_tinystatus -->|"checks services"| node_status_targets
node_tinystatus -->|"updates history"| node_history
node_tinystatus -->|"renders page"| node_status_page
node_user -.->|"runs DNS container"| node_pihole
node_user -.->|"runs bastion container"| node_bastion

click node_nscli "https://github.com/angusrausch/mini-projects/blob/main/ns_spam/src/cli_request.cpp"
click node_nsrunner "https://github.com/angusrausch/mini-projects/blob/main/ns_spam/src/request.cpp"
click node_py_dns "https://github.com/angusrausch/mini-projects/blob/main/ns-spam.py"
click node_site_entry "https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/main.rs"
click node_site_cli "https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/cli.rs"
click node_site_gui "https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/gui.rs"
click node_site_runtime "https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/lib.rs"
click node_py_site "https://github.com/angusrausch/mini-projects/blob/main/site-tester/site-tester.py"
click node_log_parser "https://github.com/angusrausch/mini-projects/blob/main/server_log_parser/log_parser.py"
click node_ssh_helper "https://github.com/angusrausch/mini-projects/blob/main/ssh_helper.py"
click node_backup_script "https://github.com/angusrausch/mini-projects/blob/main/backerupperer/backup.sh"
click node_backup_config "https://github.com/angusrausch/mini-projects/blob/main/backerupperer/backup.yaml"
click node_shell_config "https://github.com/angusrausch/mini-projects/tree/main/shell_configs"
click node_microstatus "https://github.com/angusrausch/mini-projects/tree/main/docker_vms/microstatus"
click node_tinystatus "https://github.com/angusrausch/mini-projects/blob/main/docker_vms/tinystatus/tinystatus.py"
click node_checks "https://github.com/angusrausch/mini-projects/blob/main/docker_vms/microstatus/checks.yaml.example"
click node_history "https://github.com/angusrausch/mini-projects/blob/main/docker_vms/tinystatus/tinystatus.py"
click node_status_page "https://github.com/angusrausch/mini-projects/tree/main/docker_vms/tinystatus"
click node_pihole "https://github.com/angusrausch/mini-projects/tree/main/docker_vms/pihole"
click node_bastion "https://github.com/angusrausch/mini-projects/tree/main/docker_vms/bastion"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_nscli,node_nsrunner,node_py_dns,node_site_entry,node_site_cli,node_site_gui,node_site_runtime,node_py_site,node_shell_user toneBlue
class node_log_parser,node_ssh_helper,node_backup_script,node_backup_config toneAmber
class node_microstatus,node_tinystatus,node_checks,node_history,node_status_page,node_pihole,node_bastion,node_dns,node_server_logs toneMint
class node_shell_config toneRose
class node_user,node_web_target,node_ssh_config,node_ssh_hosts,node_backup_files,node_backup_dest,node_status_targets toneIndigo
```

## Components

### Load testing

- [DNS CLI](https://github.com/angusrausch/mini-projects/blob/main/ns_spam/src/cli_request.cpp): `ns_spam/src/cli_request.cpp`
- [DNS workload](https://github.com/angusrausch/mini-projects/blob/main/ns_spam/src/request.cpp): `ns_spam/src/request.cpp`
- [Python DNS tester](https://github.com/angusrausch/mini-projects/blob/main/ns-spam.py): `ns-spam.py`
- [Site Tester entry](https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/main.rs): `site_tester/src/main.rs`
- [Site Tester CLI](https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/cli.rs): `site_tester/src/cli.rs`
- [Site Tester GUI](https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/gui.rs): `site_tester/src/gui.rs`
- [HTTP request engine](https://github.com/angusrausch/mini-projects/blob/main/site_tester/src/lib.rs): `site_tester/src/lib.rs`
- [Python Site Tester](https://github.com/angusrausch/mini-projects/blob/main/site-tester/site-tester.py): `site-tester/site-tester.py`

### Admin utilities

- [Log parser](https://github.com/angusrausch/mini-projects/blob/main/server_log_parser/log_parser.py): `server_log_parser/log_parser.py`
- [SSH helper](https://github.com/angusrausch/mini-projects/blob/main/ssh_helper.py): `ssh_helper.py`
- [Backup runner](https://github.com/angusrausch/mini-projects/blob/main/backerupperer/backup.sh): `backerupperer/backup.sh`
- [Backup rules](https://github.com/angusrausch/mini-projects/blob/main/backerupperer/backup.yaml): `backerupperer/backup.yaml`

### Status services

- [Microstatus](https://github.com/angusrausch/mini-projects/tree/main/docker_vms/microstatus): `docker_vms/microstatus`
- [TinyStatus monitor](https://github.com/angusrausch/mini-projects/blob/main/docker_vms/tinystatus/tinystatus.py): `docker_vms/tinystatus/tinystatus.py`
- [Check definitions](https://github.com/angusrausch/mini-projects/blob/main/docker_vms/microstatus/checks.yaml.example): `docker_vms/microstatus/checks.yaml.example`
- [Status history](https://github.com/angusrausch/mini-projects/blob/main/docker_vms/tinystatus/tinystatus.py): `docker_vms/tinystatus/tinystatus.py`
- [Generated status page](https://github.com/angusrausch/mini-projects/tree/main/docker_vms/tinystatus): `docker_vms/tinystatus`
- [Pi-hole container](https://github.com/angusrausch/mini-projects/tree/main/docker_vms/pihole): `docker_vms/pihole`
- [Bastion container](https://github.com/angusrausch/mini-projects/tree/main/docker_vms/bastion): `docker_vms/bastion`

### Shell customization

- [Prompt configs](https://github.com/angusrausch/mini-projects/tree/main/shell_configs): `shell_configs`

### Other components

- **Operator**
- **DNS server**
- **Website**
- **Server log files**
- **SSH config**
- **SSH hosts**
- **Selected files**
- **Backup locations**
- **Shell user**
- **Monitored services**

## Connections

- Operator → DNS CLI: runs CLI
- DNS CLI → DNS workload: starts workload
- DNS workload → DNS server: sends DNS queries
- Operator → Python DNS tester: runs tester
- Python DNS tester → DNS server: runs nslookup
- Operator → Site Tester entry: launches
- Site Tester entry → Site Tester CLI: dispatches CLI
- Site Tester entry → Site Tester GUI: dispatches GUI
- Site Tester CLI → HTTP request engine: runs requests
- Site Tester GUI → HTTP request engine: runs requests
- HTTP request engine → Website: sends HTTP requests
- Operator → Python Site Tester: runs tester
- Python Site Tester → Website: sends HTTP requests
- Operator → Log parser: selects logs
- Server log files → Log parser: reads
- Operator → SSH helper: requests SSH tasks
- SSH helper → SSH config: reads and edits
- SSH helper → SSH hosts: copies keys or config
- Operator → Backup runner: runs backup
- Backup runner → Backup rules: reads rules
- Backup runner → Selected files: selects files
- Backup runner → Backup locations: syncs with rsync
- Shell user → Prompt configs: loads settings
- Operator → Microstatus: runs service checks
- Operator → TinyStatus monitor: runs monitor
- TinyStatus monitor → Check definitions: reads checks
- TinyStatus monitor → Monitored services: checks services
- TinyStatus monitor → Status history: updates history
- TinyStatus monitor → Generated status page: renders page
- Operator → Pi-hole container: runs DNS container
- Operator → Bastion container: runs bastion container
