# To-Do-Liste - Payload CMS Multi-Tenant Projekt > **Server:** sv-payload (LXC 700) - 10.10.181.100 > **Frontend-Tasks:** Siehe `FRONTEND.md` (sv-frontend, LXC 704) --- ## Zusammenfassung: Offene Tasks (Payload-Server) ### Hohe Priorität | Status | Task | Bereich | |--------|------|--------| | [ ] | SMTP-Credentials in `.env` konfigurieren | E-Mail | ### Mittlere Priorität | Status | Task | Bereich | |--------|------|--------| | [ ] | Media-Backup zu S3/MinIO | Backup | | [ ] | CDN-Integration (Cloudflare) | Caching | | [x] | CI/CD Pipeline erweitern (Lint/Test/Build) | DevOps | | [x] | Security Scanning (CodeQL, Dependency Audit) | DevOps | | [x] | Staging-Deployment | DevOps | | [x] | Memory-Problem lösen (Swap) | Infrastruktur | | [ ] | PM2 Cluster Mode testen | Infrastruktur | | [ ] | Payload/Next Releases auf Next.js 16 Support beobachten | Tech Debt | ### Niedrige Priorität | Status | Task | Bereich | |--------|------|--------| | [ ] | Monitoring: Sentry, Prometheus, Grafana | Monitoring | | [x] | AuditLogs Retention (90 Tage Cron) | Data Retention | | [x] | Email-Log Cleanup Cron | Data Retention | | [x] | Media-Orphan-Cleanup | Data Retention | | [x] | Consent-Logs Archivierung | Data Retention | | [ ] | Dashboard-Widget für Email-Status | Admin UX | | [ ] | TypeScript Strict Mode | Tech Debt | | [x] | E2E Tests für kritische Flows | Testing | ### Dokumentation | Status | Task | |--------|------| | [x] | DEPLOYMENT.md erstellen | --- ## Legende - [ ] Offen - [x] Erledigt - [~] In Bearbeitung - [!] Blockiert --- ## Offene Aufgaben (Detail) ### Analytics Integration - [ ] Umami-Server auf sv-analytics einrichten - [ ] Website-IDs für alle 4 Tenants erstellen - [ ] `src/config/analytics.ts` mit Website-IDs - [ ] `UmamiScript.tsx` implementieren - [ ] Umami Script in Root Layout einbinden (Multi-Tenant) - [ ] `useAnalytics.ts` Hook für Custom Events - [ ] `analytics.server.ts` für Server-Side Events - [ ] Event-Tracking in Newsletter/CTA integrieren ### Google Ads Conversion (mit Consent) - [ ] `GoogleConsentMode.tsx` implementieren - [ ] Google Consent Mode v2 mit Orestbida Cookie-Banner - [ ] `useGclid.ts` Hook für GCLID-Erfassung - [ ] `google-ads.ts` Client-Side Conversion Tracking - [ ] `google-ads.server.ts` Server-Side Conversion API - [ ] Enhanced Conversions mit gehashten E-Mails ### Backup-System - [ ] Media-Backup zu S3/MinIO - [ ] Disaster Recovery Plan ### Monitoring & Logging - [ ] Sentry Error Tracking - [ ] Prometheus Metrics - [ ] Grafana Dashboard --- ## Build & Infrastructure - [x] Memory-Problem gelöst (4GB Swap via ZFS ZVOL) - [ ] PM2 Cluster Mode testen --- ## Testing & CI/CD - [x] CI/CD Pipeline (`.github/workflows/ci.yml`) - [x] Staging-Deployment (`.github/workflows/deploy-staging.yml`) - [x] E2E Tests (`tests/e2e/`) --- ## Data Retention - [x] Automatische Datenbereinigung (`src/lib/retention/`) - [x] Cron-Job für Email-Log Cleanup (90 Tage) - [x] AuditLogs Retention Policy (90 Tage) - [x] Consent-Logs Archivierung (3 Jahre, expiresAt-basiert) - [x] Media-Orphan-Cleanup --- ## Hinweise 1. **Tenant-Isolation bei localhost:** API gibt 403 zurück wenn kein Tenant zur Domain passt (gewollt) 2. **GraphQL Playground deaktiviert:** Route entfernt 3. **PM2 Cluster Mode:** Aktuell 1 Instanz, für Skalierung `instances: "max"` setzen --- *Letzte Aktualisierung: 29.12.2025*