# Nexus – Projektanalyse **Analysestand:** 2026-07-26 **Repository:** `https://git.noveria.net/bao/nexus.git` **Branch / Commit:** `main` / `3bc7622977f4a6c2f2e98ab4aa856a2e45c3cf49` **Version im Repository:** `0.2.56` (`v0.2.56-91-g3bc7622`) **Urteil:** Gute technische Grundlage, aber wegen zweier P0-Zugriffskontrollrisiken und schwerer Frontend-/Responsive-Brüche aktuell nicht produktionsreif. ## 1. Kurzfassung Nexus ist deutlich mehr als ein UI-Prototyp: Das Repository enthält ein geschichtetes ASP.NET-Core-Backend, eine persistente PostgreSQL-Domäne, OpenClaw-Adapter, eine strukturierte Agent-Task-Bridge, eine Vue-Anwendung sowie CI-, Deployment-, Backup- und Rollback-Workflows. Die Backend- und Operations-Basis ist der stärkste Teil des Projekts. Die aktuelle Produktqualität wird jedoch von vier systemischen Problemen bestimmt: 1. Die API hat keine globale Authentifizierungsanforderung. Mehrere Controller sind dadurch ohne Token erreichbar; darunter befindet sich ein mutierender Agent-Command-Endpunkt. 2. Die öffentlich weitergeleitete Bridge akzeptiert eine bekannte `X-Agent-Id` allein als Identitätsnachweis. 3. Das Frontend besteht aus zwei visuell und technisch auseinanderlaufenden Shells. Dashboard-Navigation, Dateninitialisierung und mobile Breakpoints sind nicht konsistent. 4. Die Testabdeckung ist im Backend fokussiert, im Frontend mit einer Testdatei aber zu schmal für 18 registrierte Seiten und mehrere kritische Interaktionspfade. Die vollständige Bewertung steht in [`PROJECT_EVALUATION_2026-07-26.md`](PROJECT_EVALUATION_2026-07-26.md), das visuelle Seitenaudit in [`audits/2026-07-26/PAGE_AUDIT.md`](audits/2026-07-26/PAGE_AUDIT.md), und die Zugriffskontrollanalyse in [`SECURITY_SPOT_CHECK_2026-07-26.md`](SECURITY_SPOT_CHECK_2026-07-26.md). ## 2. Technischer Bestand | Bereich | Befund | |---|---| | Umfang | 253 getrackte Dateien | | Frontend | Vue 3, TypeScript, Pinia, Vue Router, Vite, Tailwind 4, Lucide | | Backend | ASP.NET Core 10, EF Core 10, PostgreSQL 17 | | Integration | `IAgentRuntime`, OpenClaw-Adapter, MCP- und HTTP-Task-Bridge | | Persistenz | 9 fachliche EF-Core-Migrationen | | Betrieb | Docker Compose, Nginx, Traefik, Gitea Actions | | Backend-Code | 107 C#-Dateien plus 12 C#-Testdateien | | Frontend-Code | 87 Dateien unter `frontend/src`, davon 51 Vue-Dateien | | Frontend-Tests | 1 Testdatei mit 2 Tests | | CI-Baseline | .NET 10, Node.js 24, pnpm 10.12.1 | ## 3. Architektur ```mermaid flowchart LR UI["Vue SPA
Routes, Views, Pinia"] -->|JWT / REST / SSE| API["ASP.NET Core API"] API --> CTRL["Controller"] CTRL --> SVC["Domain and application services"] SVC --> REPO["Repositories / EF Core"] REPO --> DB["PostgreSQL"] SVC --> RUNTIME["IAgentRuntime"] RUNTIME --> OPENCLAW["OpenClaw adapter"] GATEWAY["Trusted agent gateway"] -->|Bridge commands| BRIDGE["GatewayBridgeController"] BRIDGE --> TASKBRIDGE["ITaskBridgeService"] TASKBRIDGE --> REPO ``` ### Backend Positiv: - Controller, Services und Repositories sind klar getrennt. - Task-Mutationen werden über eine strukturierte `ITaskBridgeService`-Fassade gebündelt. - EF-Core-Migrationen, Health Checks und DTOs sind vorhanden. - JWT-Prüfung validiert Signatur, Issuer, Audience und Laufzeit. - Refresh Tokens werden rotiert und gehasht gespeichert. - Rate Limiting, CSP und weitere Security Header sind eingerichtet. Risiken: - `AddAuthorization()` besitzt keine Fallback Policy. Sicherheit hängt damit vollständig von jedem einzelnen `[Authorize]`-Attribut ab. - Das Backend targetiert `net10.0`, aber es gibt kein `global.json`, das die erwartete SDK-Familie lokal festlegt. - Produktionspfade für Workspace-Mounts und Deployment sind stark an einen konkreten Host gekoppelt. - Das einmalige Bootstrap-Passwort wird in den Prozess-Logs ausgegeben. Das ist operativ bequem, erzeugt aber einen sensiblen Log-Artefakt. ### Frontend Positiv: - API-Clients, Stores, Mapper, Views und UI-Komponenten sind grundsätzlich getrennt. - Es gibt eigenständige Oberflächen für Tasks, Agenten, Memory, Dokumente, Security, Incidents, Calendar, Notifications und Settings. - Settings und Teile der Legacy-Shell verhalten sich auf kleinen Viewports bereits brauchbar. Risiken: - `/dashboard` verwendet `NexusLayout` und `FlowBoard`; fast alle anderen Seiten verwenden `AppSidebar`, `AppHeader` und teils `ModuleView`. Das führt zu einem sichtbaren Design- und Navigationsbruch. - Die neue Sidebar verlinkt `/orchestration`, `/research`, `/hosts` und `/costs`, obwohl keine dieser Routen registriert ist. Der Wildcard-Redirect maskiert den Fehler und führt zurück zum Dashboard. - `AgentDetailView` navigiert über `/team`; auch diese Route existiert nicht. - Der Operations Store wird in `App.vue` nur beim ersten Mount aktualisiert, wenn zu diesem Zeitpunkt bereits Authentifizierung vorliegt. Nach normalem Login bleiben Projects, Models und Activity zunächst leer, bis der Nutzer manuell „Refresh“ auswählt. - `liveSync.ts` und `live-sync.ts` implementieren denselben Pinia-Store mit derselben ID. Das ist ein unnötiger Drift- und Importfehler-Risikofaktor. - Task-Daten unterstützen `Critical`; die Prioritätsauswahl in Task Board und Task Detail bietet aber nur High, Medium und Low. Ein bestehender `Critical`-Wert erscheint deshalb als leere Auswahl. - Mehrere sichtbare Controls sind Platzhalter: Suche, „Ask Iris“ und Logout in der neuen Dashboard-Shell haben keine vollständige Aktion. - Zahlreiche Icon-Buttons besitzen keinen zugänglichen Namen. ## 4. Daten- und Produktfluss Der zentrale Betriebsfluss ist sinnvoll modelliert: 1. Das Frontend lädt einen Operations-Snapshot und spezialisierte Detailressourcen. 2. Nutzer ändern Projekte und Tasks über authentifizierte API-Routen. 3. Agenten sollen strukturierte Commands über die Bridge an `ITaskBridgeService` senden. 4. Services validieren Zustände und schreiben über Repositories in PostgreSQL. 5. Activity- und Live-Updates werden wieder in der Oberfläche dargestellt. Die Schwäche liegt nicht im Domänenfluss, sondern an seinen Grenzen: Browser-Authentifizierung, Service-Authentifizierung und UI-Initialisierung sind nicht durchgehend als verbindliche Verträge umgesetzt. ## 5. Qualität nach Bereich ### Architektur und Wartbarkeit Die Backend-Struktur ist nachvollziehbar und erweiterbar. Der aktuelle Frontend-Zustand deutet dagegen auf eine laufende V2-Migration ohne klares Migrationsende hin. Zwei Shells, tote Routen, ein verwaistes `TeamView` und doppelte Stores erhöhen die Änderungs- und Regressionkosten. ### Tests Die zwölf Backend-Testdateien decken insbesondere Auth-, Task-, Bridge- und MCP-Verhalten ab. Die Frontend-Suite besteht aktuell aus einer Testdatei mit zwei Tests. Es fehlen mindestens: - Router- und Navigationsverträge, - Store-Hydration nach Login, - Critical-Priority-Roundtrip, - Keyboard-/Accessible-Name-Prüfungen, - Komponenten- und Viewport-Regressionstests, - visuelle Smoke-Checks für alle Kernrouten. ### CI/CD und Betrieb Die Gitea-Pipeline ist für die Projektgröße gut ausgebaut: - getrennte Backend-, Frontend- und Security-Jobs, - Build und Tests vor Deployment, - serielles Production Deployment, - separate Backup- und Rollback-Workflows. Der Security-Job sucht jedoch nur heuristisch nach Secrets. Er ersetzt weder Dependency-/Container-Scanning noch eine Zugriffskontrollprüfung. Außerdem deployt ein grüner Push auf `main` automatisch; deshalb müssen P0-Sicherheits- und UI-Regressionsgates vor einem Merge verbindlich sein. ### Dokumentation README, Phasen-, Architektur- und Betriebsdokumentation sind umfangreich, aber teilweise nicht mehr synchron mit dem Code: - README behauptet Authentifizierung für alle `/api/v1`-Operationsrouten, die Controller-Attribute erfüllen diesen Vertrag nicht. - Frontend-Routen und Komponentenbeschreibungen spiegeln die V2-/Legacy-Mischung nicht vollständig. - `VERSION` ist `0.2.56`, das Frontend-Paket meldet `0.1.0`, und der aktuelle Commit liegt 91 Commits hinter dem letzten Tag. ## 6. Validierungsstand Erfolgreich ausgeführt: - `pnpm test`: 1 Datei, 2 Tests bestanden. - `pnpm build`: TypeScript-/Vue-Typecheck und Vite-Production-Build bestanden. - `dotnet test` im offiziellen .NET-10-SDK-Container: 189 Tests bestanden, 0 fehlgeschlagen, 0 übersprungen. - Browser-Audit aller 18 registrierten Seiten mit repräsentativen lokalen API-Fixtures. - Responsive Sichtprüfung bei 320, 375, 768, 1024, 1440 und 1920 Pixeln. Nicht als bestanden gewertet: - Kein Live-End-to-End-Test gegen PostgreSQL, OpenClaw, SSE und die Produktions-Proxykette. - Kein Penetrationstest und keine vollständige WCAG-Konformitätsprüfung. Der Windows-Host stellt direkt nur .NET SDK 9.0.301 bereit. Der erfolgreiche Backend-Lauf erfolgte deshalb reproduzierbar im offiziellen `mcr.microsoft.com/dotnet/sdk:10.0`-Container. ## 7. Empfehlung Nexus sollte nicht neu gebaut werden. Die vorhandene Backend- und Operationsbasis ist wertvoll. Sinnvoll ist eine fokussierte Stabilisierungsphase: 1. Zugriffskontrollen schließen und durch negative Tests absichern. 2. Eine einzige Frontend-Shell und eine einzige kanonische Navigation festlegen. 3. Login-Hydration, tote Routen, Critical-Priority und doppelte Stores beheben. 4. Dashboard und Task Board für 375–1024 px strukturell neu ordnen. 5. Frontend-Tests und visuelle Route-/Breakpoint-Gates etablieren. 6. README, Versionierung und SDK-Pinning auf den tatsächlichen Stand bringen.