9.4 KiB
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:
- Die API hat keine globale Authentifizierungsanforderung. Mehrere Controller sind dadurch ohne Token erreichbar; darunter befindet sich ein mutierender Agent-Command-Endpunkt.
- Die öffentlich weitergeleitete Bridge akzeptiert eine bekannte
X-Agent-Idallein als Identitätsnachweis. - Das Frontend besteht aus zwei visuell und technisch auseinanderlaufenden Shells. Dashboard-Navigation, Dateninitialisierung und mobile Breakpoints sind nicht konsistent.
- 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, das
visuelle Seitenaudit in
audits/2026-07-26/PAGE_AUDIT.md, und die
Zugriffskontrollanalyse in
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
flowchart LR
UI["Vue SPA<br/>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 keinglobal.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:
/dashboardverwendetNexusLayoutundFlowBoard; fast alle anderen Seiten verwendenAppSidebar,AppHeaderund teilsModuleView. Das führt zu einem sichtbaren Design- und Navigationsbruch.- Die neue Sidebar verlinkt
/orchestration,/research,/hostsund/costs, obwohl keine dieser Routen registriert ist. Der Wildcard-Redirect maskiert den Fehler und führt zurück zum Dashboard. AgentDetailViewnavigiert über/team; auch diese Route existiert nicht.- Der Operations Store wird in
App.vuenur 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.tsundlive-sync.tsimplementieren 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 bestehenderCritical-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:
- Das Frontend lädt einen Operations-Snapshot und spezialisierte Detailressourcen.
- Nutzer ändern Projekte und Tasks über authentifizierte API-Routen.
- Agenten sollen strukturierte Commands über die Bridge an
ITaskBridgeServicesenden. - Services validieren Zustände und schreiben über Repositories in PostgreSQL.
- 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.
VERSIONist0.2.56, das Frontend-Paket meldet0.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 testim 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:
- Zugriffskontrollen schließen und durch negative Tests absichern.
- Eine einzige Frontend-Shell und eine einzige kanonische Navigation festlegen.
- Login-Hydration, tote Routen, Critical-Priority und doppelte Stores beheben.
- Dashboard und Task Board für 375–1024 px strukturell neu ordnen.
- Frontend-Tests und visuelle Route-/Breakpoint-Gates etablieren.
- README, Versionierung und SDK-Pinning auf den tatsächlichen Stand bringen.