Projektkontext: Nexus-System 1) Projekt-Zweck und Ziel - Nexus ist ein zentrales, webbasiertes Admin-Interface zur Steuerung einer dynamischen IT-Infrastruktur. - Module kapseln fachliche Funktionen, das Nexus-System stellt das globale Grundgerüst bereit. - Das generelle Nexus-System wird unabhängig von den bestehenden Fachmodulen weiterentwickelt. 2) Umgebungen und Domains - Live: `nexus.kusche.berlin` - Staging: `staging.nexus.kusche.berlin` Container- und Deploy-Layout: - `/app/live/` -> Live-Code - `/app/staging/` -> Staging-Code - jeweils mit eigenem `config`-Unterordner: - `/app/live/config/` - `/app/staging/config/` Repo-Layout zu Configs: - `/config/live/` und `/config/staging/` liegen im Repo - beim Deployment werden die Dateien daraus nach `/app//config` kopiert - wichtig: im laufenden Container existiert `/app/config/` nicht, sondern nur `/app/live/config` und `/app/staging/config` 3) Verzeichnisstruktur - `/public/` -> Web Root mit globalen Assets - `/api/` -> Backend- und API-Endpunkte - `/src/` -> PHP-Kernklassen und Utilities - `/tools/` -> CLI, Worker und Jobs - `/config/` -> Umgebungs-Configs - `/modules//` -> klassische Nexus-Module - `/partials/structure/` -> Header, Footer, Menüs - `/partials/landingpages/` -> komplette Seitenlayouts - `/debug/` -> Custom Logs 4) Code-Änderungen nach Scope - globale Layouts: `/partials/structure/` und `/public/assets/css/app.css` - Konfigurationslogik: nur wenn nötig `/config/` und `/src/` - Modul-Aufgaben: nur `/modules//` und gegebenenfalls `/tools/` 5) UI-Naming und Seitenaufbau - `Seitenheader-Box`: oberste globale Header-Box mit Seitentitel, Login und Farbschema - `Submenü-Box`: Box direkt unter der Seitenheader-Box für modul- oder seitenbezogene Aktionen - `Submenü-Aktionen`: rechtsbündige Zusatzbuttons innerhalb der Submenü-Box, z.B. `Setup` oder `Nexus Übersicht` - `Bereichs-Box`: größere Inhaltsbox für einen zusammenhängenden Seitenbereich - `Karten-Box`: kleinere Karte auf derselben Ebene wie Bereichs-Boxen, meist in Grids Zentrale CSS-Klassen: - `main-header-box` - `submenu-box` - `module-submenu-actions` - `section-box` - `card-box` Globale Struktur: - zuerst Seitenheader-Box - danach Submenü-Box - danach Bereichs-Boxen und/oder Karten-Boxen je nach Seite Layout-Regeln: - vertikale Abstände zwischen `main-header-box`, `submenu-box` und den ersten Folge-Boxen müssen aus der globalen Shell kommen - maßgeblich sind `module-page-bg` und `module-page-stack` in `public/assets/css/app.css` - Top-Level-Wrapper wie Grids, Kartencontainer oder Modul-Listen dürfen keinen zusätzlichen `margin-top` oder Sonder-Gap erzeugen, der den Abstand nach dem Submenü verändert - bei Layout-Reviews ist explizit zu prüfen, ob `Main-Header -> Submenü -> erste Section/Card` optisch denselben Rhythmus hat wie auf Referenzseiten - die Optik der Submenü-Aktionsbuttons kommt ausschließlich aus dem globalen CSS Beispielstruktur: - Börsenchecker: Seitenheader-Box, Submenü-Box, Bereichs-Box, Karten-Boxen, Bereichs-Box - FX-Rates: Seitenheader-Box, Submenü-Box, danach Bereichs-Boxen - Mining-Checker: Seitenheader-Box, Submenü-Box, Bereichs-Box, Karten-Boxen, Karten-Boxen, Bereichs-Box - Modulverwaltung: Seitenheader-Box, Submenü-Box, danach Karten-Boxen 6) Nexus-Kerngerüst - Der aktuelle Ausbauschritt betrifft das generelle Nexus-System, nicht die bestehenden Fachmodule. - Bestehende Module sind funktional und strukturell zunächst ausgenommen und dürfen durch Arbeiten am Kerngerüst nicht beeinträchtigt werden. - Neue Kernfunktionen müssen parallel zum bestehenden Modulsystem eingeführt werden. - Zielbild ist ein Nexus-Grundsystem mit flexiblen Benutzer-Dashboards, Integrationen und datengetriebenen Seitenmodulen. Produktprinzip: - Nexus ist nicht nur Modul-Launcher, sondern ein persönliches und gruppenfähiges Dashboard-System. - Benutzer sollen eigene Dashboards anlegen, anordnen und konfigurieren können. - Inhalte auf Dashboards sollen aus drei Quellen kommen können: - interne Nexus-Funktionen - externe Integrationen - einfache Seitenmodule ohne eigene Modul-Implementierung Abgrenzung zu bestehenden Modulen: - das Verzeichnis `/modules//` bleibt das Zuhause klassischer Nexus-Module - das Dashboard-System ist ein zusätzliches globales Kernsystem - neue Kernfunktionen müssen ohne Umbau bestehender Module lauffähig sein 7) Globale Zeitzonen-Logik - globale Nexus-Einstellungen liegen unter `/settings` - dort werden zentral gepflegt: - `Anzeige-Zeitzone` - `Standard-Zeitzone für Crons` Regeln: - ohne Custom bei der Anzeige-Zeitzone wird die System-Zeitzone verwendet - die aktive Anzeige-Zeitzone soll angezeigt werden - die Standard-Zeitzone für Crons ist der globale Default für Modul-Crons - Module dürfen diese Zeitzone im Setup übersteuern - einzelne Cron-Einträge dürfen sie ebenfalls übersteuern UTC-Speicherregel: - Zeitwerte sollen projektweit intern immer in `UTC` gespeichert werden - Anzeige-Zeitzonen dienen nur der Darstellung für Benutzer - Cron-Zeitzonen dienen nur der lokalen Auswertung von Zeitplänen und Fälligkeiten - beim Einlesen lokaler Eingaben muss vor dem Speichern nach `UTC` normalisiert werden - beim Anzeigen gespeicherter Werte muss von `UTC` in die jeweils wirksame Anzeige-Zeitzone umgerechnet werden 8) Globales Debug-System - das Debug-Popup ist eine globale Infrastruktur aus dem zentralen Layout - die Aktivierung bleibt pro Modul über `debug_enabled` im Modul-Setup steuerbar - das Debug-Symbol darf nur sichtbar sein, wenn für das aktuelle Modul Debug aktiv ist - Module sollen keine eigene separate Debug-Oberfläche bauen, wenn der globale Debug-Stream genutzt werden kann 9) Sicherheits- und Netzwerk-Constraints - Zugriff im Heimnetz `192.168.178.0/24` per Nginx begrenzt - SSH-Hosts nur Heimnetz