- Updated .env.example with legal operator details for compliance. - Refactored Impressum, Privacy, and Terms pages to utilize a new LegalDocument component for improved structure and maintainability. - Enhanced localization files to include legal content in both German and English, ensuring accurate representation of legal information. - Improved i18n handling to support locale detection from Accept-Language headers.
73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
## 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`
|
||
|
||
## Nächster geplanter Schritt
|
||
|
||
- Deploy auf Traefik-Server manuell verifizieren; danach ggf. `deploy` → `main` mergen (nur auf Freigabe).
|