# GUI, Informationsarchitektur, Admin & Navigation (Abnahme 2026-04-05) > **Zweck:** Einheitliche Referenz für Menschen und Code-Agents (Cursor, Claude Code, …). > **Gitea:** Teilaspekte zu [#30 Responsive UI](http://192.168.2.144:3000/Lars/mitai-jinkendo/issues/30); Admin-Layout kein separates Issue. > **Branch-Realität:** Umsetzung auf `develop`, Deploy nach `main` wie üblich. --- ## Kurzüberblick | Thema | Kern | |-------|------| | **Admin** | Eigener Bereich mit Shell wie KI-Analyse: Gruppen-Chips (mobil) / Sidebar (Desktop), Hub `/admin/g/:groupId`, Route-Guard `RequireAdmin` | | **Ziele** | Eigener Hauptnav-Punkt `/goals`; nicht mehr primär unter Analyse; Dashboard + Einstellungen als Sekundär-Einstiege | | **Einstellungen / Profil** | Nur **aktives** Profil inline; E-Mail-Self-Service; neue Profile nur **Admin → Benutzerverwaltung** | | **KI-Analyse** | Neue Ergebnis-Karte im **rechten** Spalt der `analysis-split`, damit Kategorie-Nav nicht verdrängt wird | | **PWA / iPhone** | Bottom-Nav: Safe Area auf **`.bottom-nav`**, kein Clipping durch `overflow-y` + `safe-area` auf Items | | **Deploy Prod** | Workflow: `git fetch` + `git reset --hard origin/` statt `pull` bei schmutziger `package-lock` | | **#14 Icon Picker** | Erledigt (`EmojiIconPicker`); Gitea geschlossen | --- ## Dateien (Single Source of Truth im Code) | Bereich | Pfade | |---------|--------| | Hauptnavigation | `frontend/src/config/appNav.js` (`getMainNavItems`) | | Active-State Bottom + Sidebar | `frontend/src/App.jsx` (`navItemActive`), `frontend/src/components/DesktopSidebar.jsx` | | Admin Shell & Routing | `frontend/src/layouts/AdminShell.jsx`, `frontend/src/layouts/RequireAdmin.jsx`, `frontend/src/config/adminNav.js` (`ADMIN_GROUPS`, Hubs) | | Admin-Seiten | `frontend/src/pages/AdminHomePage.jsx`, `AdminGroupHubPage.jsx`, `AdminUsersPage.jsx`, `AdminSystemPage.jsx`, … | | Einstellungen Profil | `frontend/src/pages/SettingsPage.jsx`, `.settings-page__field` in `app.css` | | KI-Analyse Layout | `frontend/src/pages/Analysis.jsx` + `.analysis-split*` in `app.css` | | Admin-Zugriff verweigert | `frontend/src/pages/Dashboard.jsx` (`adminDenied` State aus `location.state`) | | Bottom-Nav / Safe Area | `frontend/src/app.css` (`--nav-h`, `--nav-pad-top`, `.bottom-nav`, `.app-main` padding-bottom) | | Deploy | `.gitea/workflows/deploy-prod.yml`, `deploy-dev.yml` | | Backend Profil E-Mail | `backend/models.py` (`ProfileUpdate.email`), `backend/routers/profiles.py` (`update_profile` + Eindeutigkeit / Verifikation) | | .gitignore Fix | `frontend/package-lock.json` eigene Zeile (war mit `settings.local` verklebt) | --- ## Navigation: Reihenfolge (Mobile & Desktop) Übersicht → Erfassen → Verlauf → **Ziele** → Analyse → Einstellungen → **[Admin]** - **Ziele:** `NavLink` mit `end: true` (exakt `/goals`). - **Admin:** nur wenn `session.role === 'admin'`; Highlight bei `pathname.startsWith('/admin')`. --- ## Admin-Bereich (IA) 1. **Shell** nutzt dieselben UI-Klassen wie die Analyse: `.analysis-split`, `.analysis-split__nav-wrap`, `.analysis-split__main`. 2. **Nur Gruppen** in der Shell-Nav (inkl. Zähler pro Gruppe). 3. Konkrete Seiten: Karten auf **`/admin/g/:groupId`** (z. B. `features`, `prompts`, `system`). 4. **KI-Prompts** eigene Gruppe; **Basiseinstellungen** = SMTP + Placeholder-Export (`/admin/system`). 5. Kein Admin-Block mehr in den **Einstellungen** (nur Admin-Hinweis-Link zu Benutzerverwaltung). --- ## Backend-Hinweis Profil `PUT /api/profile` akzeptiert `email`; Änderung setzt `email_verified` u. a. zurück (siehe `profiles.py`). --- ## Gitea / Issues (manuell oder `scripts/gitea/gitea_api.py`) | Issue | Empfehlung | |-------|------------| | **#30** | Offen lassen oder TEILWEISE: Desktop-Sidebar existiert; ergänzt um Admin-Shell, scrollable Bottom-Nav, iOS Safe-Area. Kommentar mit Link **auf dieses Dokument**. | | **#14** | Bereits geschlossen (Icon-Picker). | | **Kein eigenes Admin-IA-Issue** | Optional: Sub-Issue „Admin Shell P7“ schließen oder mit #30 verknüpfen. | Schließe **kein** großes #30 ohne Abnahme „volle Responsive-Spec“ – diese Session liefert nur einen **abgegrenzten** GUI-Stand. --- ## Checks für Folge-Agents 1. `frontend`: `npm run build` 2. Admin-Route als Nicht-Admin: Redirect `/`, Dashboard-Hinweis 3. iPhone PWA: Bottom-Nav nicht beschnitten; Content nicht hinter Home-Indicator 4. `develop` → nach Abnahme `main` + Deploy (siehe aktualisierte Workflows) --- ## Changelog-Kurz - Admin: Shell, Hub-Routen, `RequireAdmin`, entfernt aus Settings. - Ziele: `appNav`, Dashboard, Settings, Analyse nur noch Hinweis-Link. - Settings: Mein Profil, E-Mail, keine Profilliste. - Analyse: `newResult` in `analysis-split__main`. - CSS: Bottom-Nav scroll + Safe Area + `--nav-pad-top`. - Deploy: `reset --hard` auf Runner-Arbeitskopie. - Review-Liste: #14 erledigt (siehe `REVIEW_OPEN_ISSUES_2026-04-04.md`).