## Phase 6 – WebUI-Fundament (Status: abgeschlossen, manuell bestätigt) - OAuth/Sessions, Settings-Framework, Layout, Modul-Toggles, Access-Rules - Login manuell bestätigt ## Phase 7 – WebUI Modul-Seiten + Owner-Panel (Status: abgeschlossen, manuell bestätigt) ### Abgeschlossen - Alle Modul-Dashboard-Seiten, Commands-Seite, Overview-Aktivität - Owner-Panel (`/owner`: Übersicht, Guilds, Users, Flags, Presence, Team, Jobs, Changelog, Audit) - Prisma `20260722190000_phase7_owner`, Shared Zod (`dashboard.ts`, `owner.ts`) - BullMQ WebUI↔Bot, Presence-/Wartungsmodus-Anbindung - Manuell bestätigt (User-Freigabe) ## Phase 8 – Landing, Status, Rechtsseiten (Status: abgeschlossen, manuell bestätigt) ### Abgeschlossen - Landing `/`, Status `/status`, Rechtsseiten, Public APIs, Core-Commands, `docs/verification.md` - Manuell bestätigt (User-Freigabe) ## Deploy-Branch (`deploy`) – Traefik + Dashboard-Domain ### Abgeschlossen (Code auf Branch `deploy`; `main` unverändert) - Traefik-Vollstack: Compose-Netz `traefik-network` (external) + `internal` - WebUI hinter Traefik: Host `dashboard.nexumi.de`, Entrypoint `websecure`, `certresolver=letsencrypt` - Host-Port `3000` entfernt; nur Traefik exponiert die WebUI - `WEBUI_URL=https://dashboard.nexumi.de` (OAuth-Callback: `/api/auth/callback`) - Marketing-Landing archiviert unter `apps/webui/src/archived/landing-page.tsx` - `/` zeigt Login; `/login` leitet auf `/` weiter (Query erhalten) - **SPEC-Abweichung (bewusst):** öffentliche Landing später extern auf `nexumi.de`; Dashboard unter Subdomain - Rechtsseiten vollständig (Impressum/Datenschutz/ToS) DE+EN; Locale per Accept-Language (Cookie hat Vorrang) - Plesk-Landing unter `landingpage/` mit lokalen Rechtsseiten (`impressum.php`, `datenschutz.php`, `nutzungsbedingungen.php`) ### Manuell testen (Deploy) - [ ] DNS `dashboard.nexumi.de` → Traefik-Host - [ ] Discord OAuth Redirect: `https://dashboard.nexumi.de/api/auth/callback` - [ ] `docker compose up -d --build` (Netz `traefik-network` muss existieren) - [ ] TLS-Zertifikat (Resolver-Name ggf. an Traefik anpassen) - [ ] Login `/` → Dashboard; Session-Cookie `Secure` ## Post-Phase – Premium + DSGVO (Status: implementiert, manuelle Tests offen) ### Abgeschlossen (Code) - Premium: `PremiumTierConfig`, Guild-/User-Zuweisung, Owner-UI `/owner/premium` - Limits enforced (Tags/Feeds/Backups) in Bot + WebUI - DSGVO: `/privacy`, `/gdpr delete confirm:true` (Löschung/Anonymisierung + `GdprDeletionLog`) - Log-Retention: `LoggingConfig.retentionDays` + täglicher Job `retention`/`purgeExpiredLogs` - Snipe standardmäßig aus (`GuildSettings.snipeEnabled`, Toggle in Allgemeine Einstellungen) - Migration `20260722200000_premium_gdpr` ### Manuell testen - [ ] Owner `/owner/premium`: Limits speichern, Guild PREMIUM zuweisen - [ ] Free-Limit: mehr Tags/Feeds/Backups als Free-Cap → Fehler - [ ] `/privacy` und `/gdpr delete confirm:true` - [ ] Logging-Retention im Dashboard setzen - [ ] Snipe: default aus; nach Aktivierung in Einstellungen nutzbar ### Bewusst offen - Musik- und KI-Modul (nur auf Zuruf) - Premium-Zahlungsanbindung - Externe Marketing-Landing auf `nexumi.de` ## Post-Phase – Dashboard-UI + Command-Palette + Landing-Polish (Status: implementiert) ### Abgeschlossen (Code) - Guild-/Owner-Shell: Branding, Sticky-Header, mobile Sidebar-Sheet, Overview-Polish - Globale Cmd/Ctrl+K-Suche: Seiten, Slash-Commands, Einstellungsfelder (Deep-Links) - Settings-Feld-Registry + Form-Anchors; Commands-Seite liest `?q=` - Plesk-Landing: Inter, Hero-Hierarchie, dezente Motion, Designsprache an WebUI ### Manuell testen - [ ] Dashboard: Cmd/Ctrl+K → Seite, Command und Option navigieren (Hash-Scroll) - [ ] Mobile: Sidebar-Sheet + Such-Trigger - [ ] Overview und Owner-Panel Layout - [ ] Landing Light/Dark (`prefers-color-scheme`) + CTAs ### Bewusst offen - Musik- und KI-Modul (nur auf Zuruf) - Premium-Zahlungsanbindung ## Nächster geplanter Schritt - Deploy auf Traefik-Server manuell verifizieren; danach ggf. `deploy` → `main` mergen (nur auf Freigabe).