- Remove unused variables and imports across API routes and workers - Fix TypeScript errors in ConsentLogs.ts (PayloadRequest header access) - Fix TypeScript errors in formSubmissionHooks.ts (add ResponseTracking interface) - Update eslint ignores for coverage, test results, and generated files - Set push: false in payload.config.ts (schema changes only via migrations) - Update dependencies to latest versions (Payload 3.68.4, React 19.2.3) - Add framework update check script and documentation - Regenerate payload-types.ts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.3 KiB
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 |
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] | Staging-Deployment | DevOps |
| [x] | Memory-Problem lösen (Swap) | Infrastruktur |
| [ ] | PM2 Cluster Mode testen | Infrastruktur |
| [ ] | Payload/Next Releases auf Next.js 16 Support beobachten (siehe framework-monitoring.md) |
Tech Debt |
Niedrige Priorität
| Status | Task | Bereich |
|---|---|---|
| [ ] | Monitoring: Sentry, Prometheus, Grafana | Monitoring |
| [ ] | AuditLogs Retention (90 Tage Cron) | Data Retention |
| [ ] | Email-Log Cleanup Cron | 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 |
|---|---|
| [ ] | DEPLOYMENT.md erstellen |
Legende
- Offen
- Erledigt
- [~] In Bearbeitung
- [!] Hohe Priorität
- [→] Ausgelagert (siehe FRONTEND.md)
Offene Aufgaben
Hohe Priorität
- SMTP-Credentials in
.envkonfigurieren- Echte SMTP-Zugangsdaten für Produktion hinterlegen
Mittlere Priorität
Analytics Integration
-
Umami Analytics (cookieless, ohne Consent)
- Umami-Server auf sv-analytics (10.10.181.103) einrichten
- Website-IDs für alle 4 Tenants in Umami erstellen
src/config/analytics.tsmit Website-IDs anlegensrc/components/analytics/UmamiScript.tsximplementieren- Umami Script in Root Layout einbinden (Multi-Tenant)
src/hooks/useAnalytics.tsHook für Custom Eventssrc/lib/analytics.server.tsfür Server-Side Events- Event-Tracking in Newsletter-Formular integrieren
- Event-Tracking in CTA-Buttons integrieren
- TrackedButton & TrackedDownload Komponenten erstellen
-
Google Ads Conversion (mit Consent)
src/components/analytics/GoogleConsentMode.tsximplementieren- Google Consent Mode v2 mit Orestbida Cookie-Banner integrieren
src/hooks/useGclid.tsHook für GCLID-Erfassungsrc/lib/google-ads.tsClient-Side Conversion Trackingsrc/lib/google-ads.server.tsServer-Side Conversion API- Enhanced Conversions mit gehashten E-Mails
-
Cookie Inventory
- Google Ads Cookies (_gcl_au, _gcl_aw, IDE) zur Cookie Inventory Collection hinzufügen
-
Environment Variables
- NEXT_PUBLIC_UMAMI_HOST in .env.local
- NEXT_PUBLIC_GOOGLE_ADS_ID in .env.local (pro Tenant)
- UMAMI_HOST, UMAMI_WEBSITE_ID in Backend .env
- Google Ads API Credentials in Backend .env
-
CDN-Integration (Cloudflare)
-
[~] Backup-System
- Media-Backup zu S3/MinIO
- Disaster Recovery Plan
Niedrige Priorität
- Monitoring & Logging
- Sentry Error Tracking
- Prometheus Metrics
- Grafana Dashboard
Build & Infrastructure
-
Memory-Problem lösen (erledigt: 4GB Swap via ZFS ZVOL auf Proxmox Host)
- Swap auf Server aktivieren (4GB)
- Container Swap-Limit konfiguriert (
pct set 700 -swap 4096)
-
PM2 Cluster Mode
- Multi-Instanz Konfiguration testen
- Shared State via Redis sicherstellen
Testing & CI/CD
-
CI/CD Pipeline (erledigt:
.github/workflows/ci.yml)- Automatisches Lint/Test/Build Workflow
- Staging-Deployment (erledigt:
.github/workflows/deploy-staging.yml)
-
E2E Tests für kritische Flows (erledigt:
tests/e2e/)
Data Retention
- Automatische Datenbereinigung
- Cron-Job für Email-Log Cleanup (älter als X Tage)
- AuditLogs Retention Policy (90 Tage)
- Consent-Logs Archivierung
- Media-Orphan-Cleanup
Tenant-spezifische Features
Hinweis: Backend-Collections hier, Frontend-Komponenten in
FRONTEND.md
porwoll.de
- Immobilien-Collection (falls benötigt) (Backend)
- [→] Objektsuche (Frontend)
- [→] Kontaktformular mit Objekt-Referenz (Frontend)
complexcaresolutions.de (C2S)
- [→] Leistungs-Übersicht (Frontend)
- [→] Karriere-Seite mit Stellenangeboten (Frontend)
gunshin.de / Fotografin-Portfolio
- [→] Projekt-Galerie Frontend (Frontend)
- [→] Referenzen-Slider (Frontend)
zweitmein.ng
- Produkt-Collection (falls E-Commerce) (Backend)
- [→] Preistabellen (Frontend)
Technische Schulden
- TypeScript Strict Mode aktivieren
- E2E Tests für kritische Flows
- Code-Review für Security-relevante Bereiche
- Performance-Audit der Datenbank-Queries
Dokumentation
- DEPLOYMENT.md (Deployment-Prozess)
Regelmäßige Wartung
Wöchentlich
- PM2 Logs prüfen
- Datenbank-Größe überwachen
- Media-Storage prüfen
Monatlich
- Dependencies aktualisieren (
pnpm update) - Sicherheitsupdates prüfen (
pnpm audit) - Backup-Restore testen
Quartalsweise
- Performance-Review
- Security-Audit
- Dokumentation aktualisieren
Notizen
Bekannte Probleme
-
Tenant-Isolation bei localhost: API gibt 403 zurück, wenn kein Tenant zur Domain passt. Das ist gewolltes Verhalten für Multi-Tenant-Sicherheit.
-
GraphQL Playground deaktiviert: Route wurde entfernt. Bei Bedarf wieder aktivieren.
-
PM2 Cluster Mode: Aktuell 1 Instanz. Für Skalierung
instances: "max"setzen.
Nächste Schritte (Priorisiert)
- [MITTEL] Media-Backup zu S3 einrichten
- [NIEDRIG] Monitoring (Sentry/Prometheus)
- [NIEDRIG] Analytics Integration (Umami)
Kontakte & Ressourcen
- Payload CMS Docs: https://payloadcms.com/docs
- GitHub Issues: https://github.com/payloadcms/payload/issues
- Discord Community: https://discord.com/invite/payload
Letzte Aktualisierung: 14.12.2025
Changelog
14.12.2025
- Tenant-spezifische Collections implementiert:
- Bookings Collection für porwoll.de (Fotografie-Buchungen)
- Certifications Collection für C2S (Zertifizierungen)
- Projects Collection für gunshin.de (Game-Development-Projekte)
- BeforeAfterBlock für porwoll.de (Vorher/Nachher Bildvergleich)
- Migration:
20251214_010000_tenant_specific_collections.ts - 28 neue Datenbank-Tabellen erstellt
- TODO.md bereinigt: Alle erledigten Tasks entfernt
12.12.2025
- PgBouncer Connection Pooling eingerichtet
- Unit Tests für Access Control implementiert
- Rate-Limits auf Redis migriert
11.12.2025
- Automatisierte Datenbank-Backups eingerichtet
- Offsite-Backup zu Hetzner Object Storage
- Dokumentierter Restore-Prozess
10.12.2025
- Newsletter Double Opt-In implementiert
- OpenAPI-Dokumentation hinzugefügt
- Audit-Fixes durchgeführt
09.12.2025
- Full-Text-Search aktiviert
- BullMQ Queue-System implementiert
- PDF-Queue-System implementiert
- Index-Audit durchgeführt