--- stepsCompleted: - step-01-init - step-02-discovery - step-03-core-experience - step-04-emotional-response - step-05-inspiration - step-06-design-system - step-07-defining-experience - step-08-visual-foundation - step-09-design-directions - step-10-user-journeys - step-11-component-strategy - step-12-ux-patterns - step-13-responsive-accessibility - step-14-complete inputDocuments: - _bmad-output/planning-artifacts/prd.md - README.md bmadSkill: 'UX Designer Agent β€” /bmad-agent-bmm-ux-designer β†’ [CU] Create UX Design' bmadWorkflow: '_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md' --- # UX Design Dokument β€” CouncilOS **Autor:** BMAD UX Designer Agent (🎨) **Datum:** 2026-03-12 **Version:** 1.0.0 **Bezug:** PRD v1.0.0 --- ## 1. Design-Vision CouncilOS gibt dem Nutzer das GefΓΌhl, **Dirigent eines KI-Orchesters** zu sein. Die OberflΓ€che kommuniziert Kontrolle, Transparenz und intellektuelle Kraft β€” ohne technisches Fachwissen vorauszusetzen. **Kernwerte des Designs:** - **Klarheit ΓΌber KomplexitΓ€t** β€” Komplexe Agent-Pipelines mΓΌssen auf einen Blick verstehbar sein. - **Lebendige Transparenz** β€” Der Nutzer sieht immer, was die KI gerade tut (pulsierender Node, Live-Text). - **Vertrauen durch Kontrolle** β€” God Mode gibt das GefΓΌhl, Herr der Lage zu sein. --- ## 2. Nutzererfahrungs-Ziele | Ziel | Messgrâße | |------|-----------| | Nutzer baut ersten Council in < 5 Minuten | Zeit bis zur ersten erfolgreichen Speicherung | | Nutzer versteht sofort, welcher Agent aktiv ist | Qualitative Usability-Tests | | God Mode-Popup ist selbsterklΓ€rend | Anteil Nutzer, die ohne Anleitung genehmigen/ablehnen kΓΆnnen | --- ## 3. Informationsarchitektur ``` CouncilOS β”œβ”€β”€ Tab A: Rat-Architekt (Setup Mode) β”‚ β”œβ”€β”€ Infinite Canvas (React Flow) β”‚ β”‚ β”œβ”€β”€ Agent-Nodes (verschiebbar, verbindbar) β”‚ β”‚ └── Edges (linear + bedingt) β”‚ β”œβ”€β”€ Linke Seitenleiste: Node-Bibliothek (Drag-Quelle) β”‚ β”œβ”€β”€ Rechte Seitenleiste: Node/Edge-Einstellungen (kontextuell) β”‚ └── Top-Bar: Council-Name, Speichern, Export β”‚ └── Tab B: Konferenzzimmer (Execution Mode) β”œβ”€β”€ Eingabebereich (Prompt + PDF-Upload) β”œβ”€β”€ Mode-Toggle (Auto-Pilot / God Mode) β”œβ”€β”€ Live-Diagramm-View (schreibgeschΓΌtzter Canvas) β”œβ”€β”€ Output-Bereich (wachsendes Dokument) └── God Mode Approval-Overlay (situativ) ``` --- ## 4. UI-Komponenten ### 4.1 Agent-Node (Canvas-Element) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ€– Master KI β”‚ ← Name β”‚ ───────────────────────── β”‚ β”‚ Claude 3.5 Sonnet β”‚ ← LLM-Modell β”‚ πŸ” Web-Suche πŸ“„ PDF β”‚ ← Tool-Badges β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ●──── (Verbindungspunkte) ``` **ZustΓ€nde:** - **Standard:** Grauer Rahmen, weißer Hintergrund - **AusgewΓ€hlt:** Blauer Rahmen, leichter Schatten - **Aktiv (laufend):** Pulsierender gelber Glow-Effekt (via CSS-Animation) - **Abgeschlossen:** GrΓΌner Rand (kurz, dann wieder Standard) - **Fehler:** Roter Rand ### 4.2 Edge (Verbindungspfeil) | Edge-Typ | Darstellung | Bedeutung | |----------|-------------|-----------| | Linear | Durchgehende graue Linie mit Pfeil | Immer weiterleiten | | Bedingt (rework) | Gestrichelte rote Linie mit Label | Bei Fehlern zurΓΌck | | Bedingt (approve) | Durchgehende grΓΌne Linie mit Label | Bei Genehmigung weiter | ### 4.3 Node-Einstellungs-Panel (Seitenleiste rechts) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Node-Einstellungen β”‚ β”‚ ───────────────────────────────── β”‚ β”‚ Name: [__________________] β”‚ β”‚ β”‚ β”‚ System-Prompt: β”‚ β”‚ [ ] β”‚ β”‚ [ Du bist ein Content-Experte ] β”‚ β”‚ [ ] β”‚ β”‚ β”‚ β”‚ LLM-Modell: [Claude 3.5 Sonnetβ–Ό] β”‚ β”‚ β”‚ β”‚ Tools: β”‚ β”‚ πŸ” Web-Suche ○────● β”‚ β”‚ πŸ“„ PDF-Reader ○────○ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### 4.4 God Mode Approval-Overlay ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ⏸ God Mode β€” Warte auf Genehmigung β”‚ β”‚ ───────────────────────────────────────── β”‚ β”‚ Agent β€žKritiker KI" schlΓ€gt vor: β”‚ β”‚ β”‚ β”‚ πŸ” Das Dokument an β€žMaster KI" zurΓΌck- β”‚ β”‚ weisen. β”‚ β”‚ β”‚ β”‚ Grund: β€žScore 6/10 β€” Zu wenig Details" β”‚ β”‚ β”‚ β”‚ Aktuelles Dokument: β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Lorem ipsum... β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ [βœ… Genehmigen] [✏️ Modifizieren] [❌ Ablehnen] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## 5. User Journey: Ersten Council erstellen ``` 1. Nutzer ΓΆffnet CouncilOS └─► Rat-Architekt Tab wird angezeigt (leerer Canvas) 2. Nutzer zieht β€žAgent"-Node aus der Seitenleiste └─► Node erscheint auf dem Canvas mit Default-Einstellungen 3. Nutzer klickt auf den Node └─► Rechtes Panel ΓΆffnet sich: Name, System-Prompt, Modell, Tools 4. Nutzer benennt Node β€žMaster KI" und gibt System-Prompt ein └─► Canvas-Node aktualisiert sich live 5. Nutzer zieht zweiten Node (Kritiker KI) und verbindet sie └─► Edge-Pfeil erscheint 6. Nutzer markiert RΓΌck-Edge als bedingt β€žrework" └─► Gestrichelte rote Linie mit Label 7. Nutzer gibt Council-Namen ein (oben) und klickt β€žSpeichern" └─► Council wird in PostgreSQL gespeichert, BestΓ€tigung erscheint ``` --- ## 6. User Journey: Council ausfΓΌhren (Auto-Pilot) ``` 1. Nutzer wechselt zum Konferenzzimmer-Tab 2. Nutzer tippt Prompt: β€žSchreibe einen Blogartikel ΓΌber KI-Trends 2025" 3. Nutzer wΓ€hlt β€žAuto-Pilot" und klickt β€žStarten" └─► HTTP POST β†’ 202 Accepted, run_id zurΓΌck └─► WebSocket-Verbindung wird geΓΆffnet 4. β€žMaster KI"-Node pulsiert gelb └─► WebSocket-Event: {"node": "master_agent", "status": "running"} 5. β€žKritiker KI"-Node pulsiert gelb └─► WebSocket-Event: {"node": "critic_agent", "status": "running"} 6. Rwork-Schleife (falls Score < 8): └─► Roter Rand kurz bei Master-Node β†’ wieder gelb 7. β€žWriter KI"-Node pulsiert β†’ grΓΌner Rand └─► WebSocket-Event: {"node": "writer_agent", "status": "completed"} 8. Finales Dokument erscheint im Output-Bereich └─► WebSocket-Event: {"status": "done"} ``` --- ## 7. User Journey: God Mode ``` 1. Nutzer wΓ€hlt β€žGod Mode" im Toggle 2. Erster Node startet β†’ pulsiert └─► Nach Node-Abschluss: Overlay erscheint 3. Overlay zeigt: Agent-Name, Vorschlag, Grund, aktuelles Dokument 4. Nutzer wΓ€hlt β€žGenehmigen" └─► POST /approve β†’ nΓ€chster Node startet 5. Nutzer wΓ€hlt β€žModifizieren" └─► Dokument-Editierfeld wird aktiv └─► Nutzer bearbeitet Text β†’ Klick β€žFortfahren" └─► Modifizierter State wird an Backend gesendet 6. Nutzer wΓ€hlt β€žAblehnen" └─► Run wird als fehlgeschlagen markiert └─► Benachrichtigung: β€žRun abgebrochen" ``` --- ## 8. Visuelles Design-System ### 8.1 Farbpalette | Token | Wert | Verwendung | |-------|------|-----------| | `--color-primary` | `#3B82F6` (Blau) | AusgewΓ€hlte Nodes, Buttons | | `--color-active` | `#F59E0B` (Amber) | Aktiv laufender Node (Glow) | | `--color-success` | `#10B981` (GrΓΌn) | Abgeschlossener Node, Approve | | `--color-danger` | `#EF4444` (Rot) | Fehler-Node, Reject, rework-Edge | | `--color-bg` | `#F8FAFC` | Canvas-Hintergrund | | `--color-node-bg` | `#FFFFFF` | Node-Hintergrund | | `--color-border` | `#E2E8F0` | Node-Standard-Rahmen | | `--color-text` | `#1E293B` | PrimΓ€rtext | | `--color-text-muted` | `#64748B` | SekundΓ€rtext | ### 8.2 Typografie | Ebene | Font | Grâße | Gewicht | |-------|------|-------|---------| | UI-Labels | Inter / System-UI | 14px | 500 | | Node-Name | Inter | 15px | 600 | | System-Prompt | Inter (Monospace fΓΌr Code) | 13px | 400 | | Output-Text | Inter | 16px | 400 | ### 8.3 Animationen | Animation | Beschreibung | |-----------|--------------| | `pulse-glow` | Aktiver Node: 0.8s-Keyframe-Animation, Amber-Box-Shadow pulsiert | | `node-complete` | GrΓΌner Rand fΓΌr 1,5 Sekunden nach Abschluss | | `overlay-slide-in` | God Mode Overlay: 150ms Ease-in-out von unten | --- ## 9. Responsive Design & Accessibility | Aspekt | Anforderung | |--------|-------------| | Mindest-Viewport | 1280 Γ— 768 px (Desktop-Fokus; kein Mobile MVP) | | Keyboard-Navigation | Canvas-Nodes per Tab erreichbar | | Aria-Labels | Alle Buttons und interaktiven Elemente mit `aria-label` | | Farbkontrast | WCAG AA β€” TextverhΓ€ltnis β‰₯ 4.5:1 | | Fokus-Sichtbarkeit | Deutlicher Fokus-Ring bei Keyboard-Navigation | --- ## 10. KomponentenΓΌbersicht (Implementiert) | Komponente | Pfad | Beschreibung | |------------|------|--------------| | `ArchitectCanvas` | `app/components/ArchitectCanvas.tsx` | React Flow Canvas-Wrapper | | `NavTabs` | `app/components/NavTabs.tsx` | Tab-Navigation (Rat-Architekt / Konferenzzimmer) | | `NodeSidebar` | `app/components/panels/NodeSidebar.tsx` | Linke Seitenleiste (Drag-Quelle) | | `NodeSettingsPanel` | `app/components/panels/NodeSettingsPanel.tsx` | Rechtes Settings-Panel | | `EdgeSettingsPanel` | `app/components/panels/EdgeSettingsPanel.tsx` | Edge-Einstellungen | | `AgentNode` | `app/components/nodes/` | Custom React Flow Node-Komponente | | `ConditionalEdge` | `app/components/edges/` | Custom React Flow Edge-Komponente | | `council-store` | `app/store/council-store.ts` | Zustand State Management | | `blueprint-parser` | `app/utils/blueprint-parser.ts` | React Flow β†’ Blueprint JSON | | `api-client` | `app/utils/api-client.ts` | HTTP-Client |