From a2504c13273fa5f6222594834754a1ec4e1900e6 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Sun, 28 Dec 2025 06:36:01 +0100 Subject: [PATCH] feat: rename project to Tyto with owl branding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename project from system-monitor to Tyto (barn owl themed) - Update Go module name and all import paths - Update Docker container names (tyto-backend, tyto-frontend) - Update localStorage keys (tyto-settings, tyto-hosts) - Create barn owl SVG favicon and PWA icons (192, 512) - Update header with owl logo icon - Update manifest.json and app.html with Tyto branding Named after Tyto alba, the barn owl — nature's silent, watchful guardian 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- README.md | 16 +++++---- backend/cmd/server/main.go | 6 ++-- backend/go.mod | 2 +- backend/internal/alerts/manager.go | 2 +- backend/internal/alerts/manager_test.go | 2 +- backend/internal/api/routes.go | 6 ++-- backend/internal/collectors/amdgpu.go | 2 +- backend/internal/collectors/cpu.go | 2 +- backend/internal/collectors/disk.go | 2 +- backend/internal/collectors/docker.go | 2 +- backend/internal/collectors/memory.go | 2 +- backend/internal/collectors/network.go | 2 +- backend/internal/collectors/processes.go | 2 +- backend/internal/collectors/system.go | 2 +- backend/internal/collectors/systemd.go | 2 +- backend/internal/collectors/temperature.go | 2 +- backend/internal/sse/broker.go | 10 +++--- docker-compose.yaml | 10 +++--- frontend/package.json | 2 +- frontend/src/app.html | 4 +-- frontend/src/lib/components/Header.svelte | 18 +++++++--- frontend/src/lib/stores/hosts.ts | 4 +-- frontend/src/lib/stores/settings.ts | 4 +-- frontend/static/favicon.svg | 34 ++++++++++++++---- frontend/static/icon-192.svg | 40 +++++++++++++++------- frontend/static/icon-512.svg | 40 +++++++++++++++------- frontend/static/manifest.json | 4 +-- 27 files changed, 145 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index ed96cff..f766d34 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# System Monitor +# Tyto
@@ -10,6 +10,8 @@ **A real-time Linux system monitoring dashboard with a modern web interface** +*Named after Tyto alba, the barn owl — nature's silent, watchful guardian* + [Features](#features) • [Quick Start](#quick-start) • [Multi-Host Setup](#multi-host-monitoring) • [API](#api-reference) • [Development](#development)
@@ -18,7 +20,7 @@ ## Overview -System Monitor is a lightweight, containerized monitoring solution that provides real-time visibility into your Linux systems. Built with a Go backend for efficient metric collection and a SvelteKit frontend for a responsive, modern UI. +Tyto is a lightweight, containerized monitoring solution that provides real-time visibility into your Linux systems. Built with a Go backend for efficient metric collection and a SvelteKit frontend for a responsive, modern UI. ### Key Highlights @@ -57,8 +59,8 @@ System Monitor is a lightweight, containerized monitoring solution that provides ```bash # Clone the repository -git clone https://github.com/yourusername/system-monitor.git -cd system-monitor +git clone https://github.com/yourusername/tyto.git +cd tyto # Start the containers docker compose up -d @@ -173,7 +175,7 @@ The backend allows cross-origin requests by default. Ensure ports are accessible ### Host Configuration Storage -Host configurations are stored in browser localStorage under the key `system-monitor-hosts`. The active host is stored in `system-monitor-active-host`. +Host configurations are stored in browser localStorage under the key `tyto-hosts`. The active host is stored in `tyto-active-host`. --- @@ -267,7 +269,7 @@ npm test ### Project Structure ``` -system-monitor/ +tyto/ ├── backend/ │ ├── cmd/server/ # Main entry point │ ├── internal/ @@ -388,6 +390,6 @@ MIT License - see [LICENSE](LICENSE) for details.
-**[Back to top](#system-monitor)** +**[Back to top](#tyto)**
diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go index 117784a..c1aa502 100644 --- a/backend/cmd/server/main.go +++ b/backend/cmd/server/main.go @@ -3,9 +3,9 @@ package main import ( "log" - "system-monitor/internal/api" - "system-monitor/internal/config" - "system-monitor/internal/sse" + "tyto/internal/api" + "tyto/internal/config" + "tyto/internal/sse" ) func main() { diff --git a/backend/go.mod b/backend/go.mod index 051bef8..9244738 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -1,4 +1,4 @@ -module system-monitor +module tyto go 1.23 diff --git a/backend/internal/alerts/manager.go b/backend/internal/alerts/manager.go index 62262c8..8b779eb 100644 --- a/backend/internal/alerts/manager.go +++ b/backend/internal/alerts/manager.go @@ -5,7 +5,7 @@ import ( "sync" "time" - "system-monitor/internal/models" + "tyto/internal/models" ) // Manager handles alert threshold checking and tracking diff --git a/backend/internal/alerts/manager_test.go b/backend/internal/alerts/manager_test.go index e10ce2e..eb32602 100644 --- a/backend/internal/alerts/manager_test.go +++ b/backend/internal/alerts/manager_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "system-monitor/internal/models" + "tyto/internal/models" ) func TestNewManager(t *testing.T) { diff --git a/backend/internal/api/routes.go b/backend/internal/api/routes.go index ae38a1d..8a60f23 100644 --- a/backend/internal/api/routes.go +++ b/backend/internal/api/routes.go @@ -14,9 +14,9 @@ import ( "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" - "system-monitor/internal/config" - "system-monitor/internal/models" - "system-monitor/internal/sse" + "tyto/internal/config" + "tyto/internal/models" + "tyto/internal/sse" ) type Server struct { diff --git a/backend/internal/collectors/amdgpu.go b/backend/internal/collectors/amdgpu.go index cfd389c..b3afdfe 100644 --- a/backend/internal/collectors/amdgpu.go +++ b/backend/internal/collectors/amdgpu.go @@ -6,7 +6,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type AMDGPUCollector struct { diff --git a/backend/internal/collectors/cpu.go b/backend/internal/collectors/cpu.go index 6ef5257..5837b6e 100644 --- a/backend/internal/collectors/cpu.go +++ b/backend/internal/collectors/cpu.go @@ -8,7 +8,7 @@ import ( "strings" "sync" - "system-monitor/internal/models" + "tyto/internal/models" ) type CPUCollector struct { diff --git a/backend/internal/collectors/disk.go b/backend/internal/collectors/disk.go index bafbde2..89b26b5 100644 --- a/backend/internal/collectors/disk.go +++ b/backend/internal/collectors/disk.go @@ -8,7 +8,7 @@ import ( "strings" "syscall" - "system-monitor/internal/models" + "tyto/internal/models" ) type DiskCollector struct { diff --git a/backend/internal/collectors/docker.go b/backend/internal/collectors/docker.go index 85c5e8e..042a0ef 100644 --- a/backend/internal/collectors/docker.go +++ b/backend/internal/collectors/docker.go @@ -7,7 +7,7 @@ import ( "net/http" "time" - "system-monitor/internal/models" + "tyto/internal/models" ) type DockerCollector struct { diff --git a/backend/internal/collectors/memory.go b/backend/internal/collectors/memory.go index dbb5d11..7c0c242 100644 --- a/backend/internal/collectors/memory.go +++ b/backend/internal/collectors/memory.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type MemoryCollector struct { diff --git a/backend/internal/collectors/network.go b/backend/internal/collectors/network.go index 43d7d53..e08e531 100644 --- a/backend/internal/collectors/network.go +++ b/backend/internal/collectors/network.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type NetworkCollector struct { diff --git a/backend/internal/collectors/processes.go b/backend/internal/collectors/processes.go index a852358..eeb04be 100644 --- a/backend/internal/collectors/processes.go +++ b/backend/internal/collectors/processes.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type ProcessCollector struct { diff --git a/backend/internal/collectors/system.go b/backend/internal/collectors/system.go index 135deeb..79d06ca 100644 --- a/backend/internal/collectors/system.go +++ b/backend/internal/collectors/system.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type SystemCollector struct { diff --git a/backend/internal/collectors/systemd.go b/backend/internal/collectors/systemd.go index 05c446b..fd8ffdc 100644 --- a/backend/internal/collectors/systemd.go +++ b/backend/internal/collectors/systemd.go @@ -6,7 +6,7 @@ import ( "time" "github.com/godbus/dbus/v5" - "system-monitor/internal/models" + "tyto/internal/models" ) const dbusTimeout = 2 * time.Second diff --git a/backend/internal/collectors/temperature.go b/backend/internal/collectors/temperature.go index 90ffc81..36ade67 100644 --- a/backend/internal/collectors/temperature.go +++ b/backend/internal/collectors/temperature.go @@ -6,7 +6,7 @@ import ( "strconv" "strings" - "system-monitor/internal/models" + "tyto/internal/models" ) type TemperatureCollector struct { diff --git a/backend/internal/sse/broker.go b/backend/internal/sse/broker.go index 8e3e927..e1d2667 100644 --- a/backend/internal/sse/broker.go +++ b/backend/internal/sse/broker.go @@ -5,11 +5,11 @@ import ( "sync" "time" - "system-monitor/internal/alerts" - "system-monitor/internal/collectors" - "system-monitor/internal/config" - "system-monitor/internal/history" - "system-monitor/internal/models" + "tyto/internal/alerts" + "tyto/internal/collectors" + "tyto/internal/config" + "tyto/internal/history" + "tyto/internal/models" ) type Broker struct { diff --git a/docker-compose.yaml b/docker-compose.yaml index 0311532..2ba9f9a 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,7 +3,7 @@ services: build: context: ./backend dockerfile: Dockerfile - container_name: sysmon-backend + container_name: tyto-backend restart: unless-stopped ports: - "9848:8080" @@ -23,21 +23,21 @@ services: # D-Bus socket for systemd monitoring (optional) - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro networks: - - sysmon + - tyto frontend: build: context: ./frontend dockerfile: Dockerfile - container_name: sysmon-frontend + container_name: tyto-frontend restart: unless-stopped ports: - "9847:80" depends_on: - backend networks: - - sysmon + - tyto networks: - sysmon: + tyto: driver: bridge diff --git a/frontend/package.json b/frontend/package.json index 45c682b..4e9dff3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "system-monitor-frontend", + "name": "tyto-frontend", "version": "0.0.1", "private": true, "scripts": { diff --git a/frontend/src/app.html b/frontend/src/app.html index 4890cc7..a6d84fc 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -4,7 +4,7 @@ - System Monitor + Tyto @@ -14,7 +14,7 @@ - + %sveltekit.head% diff --git a/frontend/src/lib/components/Header.svelte b/frontend/src/lib/components/Header.svelte index 77a36da..4f36374 100644 --- a/frontend/src/lib/components/Header.svelte +++ b/frontend/src/lib/components/Header.svelte @@ -23,14 +23,24 @@
-
- - +
+ + + + + + + + + + + +

- System Monitor + Tyto

{#if $systemInfo}

{$systemInfo.hostname}

diff --git a/frontend/src/lib/stores/hosts.ts b/frontend/src/lib/stores/hosts.ts index ff0e522..7ba63be 100644 --- a/frontend/src/lib/stores/hosts.ts +++ b/frontend/src/lib/stores/hosts.ts @@ -8,8 +8,8 @@ export interface Host { isLocal: boolean; } -const STORAGE_KEY = 'system-monitor-hosts'; -const ACTIVE_HOST_KEY = 'system-monitor-active-host'; +const STORAGE_KEY = 'tyto-hosts'; +const ACTIVE_HOST_KEY = 'tyto-active-host'; // Default local host const localHost: Host = { diff --git a/frontend/src/lib/stores/settings.ts b/frontend/src/lib/stores/settings.ts index 6a54abd..f0d9b67 100644 --- a/frontend/src/lib/stores/settings.ts +++ b/frontend/src/lib/stores/settings.ts @@ -11,7 +11,7 @@ const defaultSettings: Settings = { }; function createSettingsStore() { - const stored = browser ? localStorage.getItem('sysmon-settings') : null; + const stored = browser ? localStorage.getItem('tyto-settings') : null; const initial: Settings = stored ? JSON.parse(stored) : defaultSettings; const { subscribe, set, update } = writable(initial); @@ -54,5 +54,5 @@ export const settings = createSettingsStore(); // Persist to localStorage if (browser) { - settings.subscribe((s) => localStorage.setItem('sysmon-settings', JSON.stringify(s))); + settings.subscribe((s) => localStorage.setItem('tyto-settings', JSON.stringify(s))); } diff --git a/frontend/static/favicon.svg b/frontend/static/favicon.svg index a5daf98..8a4307d 100644 --- a/frontend/static/favicon.svg +++ b/frontend/static/favicon.svg @@ -1,8 +1,30 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/static/icon-192.svg b/frontend/static/icon-192.svg index 7bae1ea..0f00f0e 100644 --- a/frontend/static/icon-192.svg +++ b/frontend/static/icon-192.svg @@ -1,14 +1,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/static/icon-512.svg b/frontend/static/icon-512.svg index 40dd3e1..9d0a7ba 100644 --- a/frontend/static/icon-512.svg +++ b/frontend/static/icon-512.svg @@ -1,14 +1,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/static/manifest.json b/frontend/static/manifest.json index afd15ad..4f28ae4 100644 --- a/frontend/static/manifest.json +++ b/frontend/static/manifest.json @@ -1,6 +1,6 @@ { - "name": "System Monitor", - "short_name": "SysMon", + "name": "Tyto", + "short_name": "Tyto", "description": "Real-time system monitoring dashboard for Linux", "start_url": "/", "display": "standalone",