Add new collections and blocks for BlogWoman affiliate and video content: Collections: - Favorites: Affiliate products with categories, badges, and price ranges - Series: YouTube series with custom branding (logo, colors) Blocks: - FavoritesBlock: Grid/list/carousel display for affiliate products - SeriesBlock: Series overview with filtering - SeriesDetailBlock: Single series page with hero - VideoEmbedBlock: YouTube/Vimeo embed with privacy mode - FeaturedContentBlock: Curated mixed-content collections Also includes documentation updates for deployment and API guides. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 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] | 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 (siehe framework-monitoring.md) |
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
- 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 (erledigt:
src/lib/retention/)- Cron-Job für Email-Log Cleanup (90 Tage default)
- AuditLogs Retention Policy (90 Tage)
- Consent-Logs Archivierung (3 Jahre, expiresAt-basiert)
- Media-Orphan-Cleanup (30 Tage Mindestalter)
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 (erledigt: 17.12.2025)
- Performance-Audit der Datenbank-Queries
Dokumentation
- DEPLOYMENT.md (Deployment-Prozess) (erledigt: 18.12.2025)
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: 29.12.2025
Changelog
29.12.2025
- Dokumentation konsolidiert und aktualisiert:
- CLAUDE.md: Collections (40+) und Blocks (37) vollständig dokumentiert
- CLAUDE.md: Neue Collections hinzugefügt (Products, Tags, Authors, Locations, Partners, Jobs, Downloads, Events)
- CLAUDE.md: Neue Blocks hinzugefügt (ImageSlider, Blogging, Team-Filter, Feature, Interactive Blocks)
- CLAUDE.md: Globals-Abschnitt korrigiert (SiteSettings/Navigations sind jetzt Collections)
- docs/INFRASTRUCTURE.md aktualisiert
- docs/DEPLOYMENT.md aktualisiert
- docs/STAGING-DEPLOYMENT.md: URLs korrigiert (pl.porwoll.tech)
- docs/anleitungen/API_ANLEITUNG.md: URLs korrigiert (pl.porwoll.tech)
- docs/anleitungen/SECURITY.md: Custom Login Page Abschnitt entfernt
27.12.2025
- Production Deployment-Strategie implementiert:
- GitHub Actions Workflow
deploy-production.ymlfür manuelles Production-Deployment - Deploy-Script
scripts/deploy-production.shmit Backup, Health Check, Rollback - Umfassende Dokumentation in
docs/DEPLOYMENT_STRATEGY.md - Features: Pre-flight Checks, DB-Backup, automatischer Rollback bei Fehler
- Neues GitHub Secret erforderlich:
PRODUCTION_SSH_KEY
- GitHub Actions Workflow
- Payload CMS Update 3.68.4 → 3.69.0:
- Login Redirect Loop behoben (formatAdminURL generiert keine absoluten URLs mehr)
- Update aller @payloadcms/* Pakete
- Admin Panel Bug-Fixes:
- Speichern-Button für User-Account repariert:
canUpdateOwnAccountAccess Control in Users.ts - Einstellungen-Gruppe in Navigation sichtbar: Explizite
read/updateAccess Controls in SEOSettings.ts
- Speichern-Button für User-Account repariert:
- Datenbank-Schema aktualisiert:
site_settings_idundnavigations_idSpalten zupayload_locked_documents_relshinzugefügt
- Code-Cleanup:
- Custom Login Page entfernt (verursachte Rendering-Fehler)
- migrations_backup Ordner entfernt
- Unbenutzte Dateien entfernt (cache-keys.ts, my-route)
- ImportMap regeneriert
- Git Remote aktualisiert:
github.com/complexcaresolutions/cms.c2sgmbh.git
18.12.2025
- Dokumentation konsolidiert:
- CLAUDE.md: Tech-Stack auf aktuelle Versionen aktualisiert (Payload 3.68.4, Next.js 15.5.9, React 19.2.3)
- CLAUDE.md: Architektur-Diagramm erweitert (sv-caddy, sv-frontend hinzugefügt)
- CLAUDE.md: Videos/VideoCategories Collections hinzugefügt
- docs/INFRASTRUCTURE.md: Komplett aktualisiert mit neuer Infrastruktur
- docs/PROJECT_STATUS.md: Neues Statusdokument behalten
- Obsolete Dateien entfernt: INFRASTRUCTURE_COMPLETE_DECEMBER_2025.md, TECHSTACK_COMPLETE_DECEMBER_2025.md
17.12.2025
- Security Code-Review abgeschlossen:
- IP Header Spoofing behoben:
X-Forwarded-For/X-Real-IPwerden nur beiTRUST_PROXY=truevertraut - CSRF Secret-Fallback behoben: Server startet nicht ohne
CSRF_SECREToderPAYLOAD_SECRETin Production - IP-Allowlist Warnungen: Startup-Warnungen wenn Allowlists leer und
allowAllIfEmpty=true - Neue Umgebungsvariable:
TRUST_PROXY=true(Pflicht hinter Reverse-Proxy) - Dateien:
src/lib/security/rate-limiter.ts,src/lib/security/ip-allowlist.ts,src/lib/security/csrf.ts - Unit Tests und Integration Tests aktualisiert (177 Tests passed)
- CLAUDE.md Dokumentation aktualisiert
- IP Header Spoofing behoben:
16.12.2025
- CI/CD Pipeline stabilisiert:
- Job-Level Timeouts (30 Minuten) für Tests und E2E hinzugefügt
- Step-Level Timeouts: Unit Tests (10min), Integration Tests (15min), E2E Tests (15min)
- Vitest testTimeout (30s) und hookTimeout (30s) konfiguriert
- Verhindert 6-Stunden-Hänger bei fehlgeschlagenen DB-Verbindungen
- drizzle-kit als Dev-Dependency hinzugefügt (früherer Commit)
- drizzle-kit push statt Migrations für CI (früherer Commit)
15.12.2025
- Data Retention System implementiert:
- Automatische Datenbereinigung für DSGVO-Compliance
- Email-Logs Cleanup (90 Tage default)
- AuditLogs Retention (90 Tage default)
- Consent-Logs Archivierung (3 Jahre, expiresAt-basiert)
- Media-Orphan-Cleanup (unreferenzierte Dateien)
- Scheduler: Täglich um 03:00 Uhr via BullMQ
- API-Endpoint
/api/retentionfür manuellen Trigger - Dateien:
src/lib/retention/,src/lib/queue/workers/retention-worker.ts
- E2E Tests stabilisiert:
- Rate-Limit Handling (429) zu allen API-Tests hinzugefügt
networkidledurchdomcontentloaded+ explizite Waits ersetzt- Status-Code-Erwartungen für protected APIs erweitert
- 105 Tests passed, 7 skipped (vorher 28 failures)
- Security Scanning Pipeline repariert:
- CodeQL im GitHub Repository aktiviert (Advanced Setup)
- Gitleaks durch GitHub Native Secret Scanning ersetzt (423 Patterns)
- CodeQL Action v3 → v4 aktualisiert
- 0 Security Vulnerabilities gefunden
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