cms.c2sgmbh/docs/anleitungen/TODO.md
Martin Porwoll 035cd371ad docs: update TODO.md with CI/Security fixes
- Add changelog entry for 15.12.2025
- E2E tests stabilized (105 passed, 7 skipped)
- Security Scanning pipeline fixed (CodeQL, native secret scanning)
- Update last modified date

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:08:56 +00:00

7.9 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 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 (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 .env konfigurieren
    • 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.ts mit Website-IDs anlegen
    • src/components/analytics/UmamiScript.tsx implementieren
    • Umami Script in Root Layout einbinden (Multi-Tenant)
    • src/hooks/useAnalytics.ts Hook für Custom Events
    • src/lib/analytics.server.ts fü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.tsx implementieren
    • Google Consent Mode v2 mit Orestbida Cookie-Banner integrieren
    • src/hooks/useGclid.ts Hook für GCLID-Erfassung
    • src/lib/google-ads.ts Client-Side Conversion Tracking
    • src/lib/google-ads.server.ts Server-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

  1. Tenant-Isolation bei localhost: API gibt 403 zurück, wenn kein Tenant zur Domain passt. Das ist gewolltes Verhalten für Multi-Tenant-Sicherheit.

  2. GraphQL Playground deaktiviert: Route wurde entfernt. Bei Bedarf wieder aktivieren.

  3. PM2 Cluster Mode: Aktuell 1 Instanz. Für Skalierung instances: "max" setzen.

Nächste Schritte (Priorisiert)

  1. [MITTEL] Media-Backup zu S3 einrichten
  2. [NIEDRIG] Monitoring (Sentry/Prometheus)
  3. [NIEDRIG] Analytics Integration (Umami)

Kontakte & Ressourcen


Letzte Aktualisierung: 15.12.2025


Changelog

15.12.2025

  • E2E Tests stabilisiert:
    • Rate-Limit Handling (429) zu allen API-Tests hinzugefügt
    • networkidle durch domcontentloaded + 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