cms.c2sgmbh/docs/anleitungen/TODO.md
Martin Porwoll 966af755b4 docs: update CLAUDE.md and TODO.md with recent features
- Add E-Mail system documentation (tenant-specific SMTP, API endpoint)
- Add Redis caching section
- Add complete Collections and Globals overview
- Update project structure with new directories
- Mark Portfolio collections and Email system as completed
- Update environment variables documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 20:22:05 +00:00

9.5 KiB

To-Do-Liste - Payload CMS Multi-Tenant Projekt

Legende

  • Offen
  • Erledigt
  • [~] In Bearbeitung
  • [!] Hohe Priorität
  • [?] Klärungsbedarf

Phase 1: Grundlagen (Abgeschlossen)

Infrastruktur

  • Payload CMS 3.x Installation
  • PostgreSQL-Datenbank eingerichtet
  • PM2 Process Manager konfiguriert
  • Caddy Reverse Proxy mit SSL
  • Multi-Tenant Plugin aktiviert
  • Git & GitHub Repository Setup (05.12.2025)

Basis-Collections

  • Users Collection
    • isSuperAdmin Feld hinzugefügt (05.12.2025)
    • Migration erstellt: 20251202_081830_add_is_super_admin_to_users
  • Media Collection
  • Tenants Collection
  • Pages Collection

Globals

  • SiteSettings
  • Navigation

Phase 2: Universal Features (Abgeschlossen)

Collections

  • Posts Collection (Blog, News, Presse, Ankündigungen)
    • Feld type (blog, news, press, announcement)
    • Feld isFeatured
    • Feld excerpt
  • Categories Collection
  • Testimonials Collection
  • Newsletter Subscribers Collection
    • Double Opt-In Support
    • DSGVO-konforme Felder (IP, Timestamps)
  • Social Links Collection

Blocks

  • Hero Block
  • Text Block
  • Image Text Block
  • Card Grid Block
  • Quote Block
  • CTA Block
  • Contact Form Block
  • Video Block
  • Divider Block
  • Timeline Block
  • Posts List Block
  • Testimonials Block
  • Newsletter Block
  • Process Steps Block
  • Cookie Configurations Collection
  • Cookie Inventory Collection
  • Consent Logs Collection
  • Privacy Policy Settings Collection

Phase 3: Offene Aufgaben

Hohe Priorität

  • [!] Tenant-Domains konfigurieren

    • Domains in Tenants Collection eintragen
    • DNS-Einträge prüfen
    • Caddy-Konfiguration für alle Domains
  • E-Mail-System (Erledigt: 06.12.2025)

    • Multi-Tenant Email Adapter für Payload CMS
    • Tenant-spezifische SMTP-Konfiguration in Tenants Collection
    • EmailLogs Collection für Protokollierung aller E-Mails
    • REST-Endpoint /api/send-email mit:
      • Authentifizierung & Tenant-Zugriffskontrolle
      • Rate-Limiting (10 E-Mails/Minute pro User)
    • Form-Submission Notifications
    • Cache-Invalidierung bei Config-Änderungen
    • SMTP-Passwort-Schutz (nie in API-Responses)
    • SMTP-Credentials in .env konfigurieren (TODO)
    • Newsletter Double Opt-In E-Mails (TODO)
  • [!] Frontend-Komponenten entwickeln

    • React/Next.js Komponenten für alle Blocks
    • Newsletter-Anmelde-Formular
    • Cookie-Banner implementieren

Mittlere Priorität

  • Bild-Optimierung (Erledigt: 30.11.2025)

    • Sharp Plugin konfiguriert
    • 11 Responsive Image Sizes definiert (thumbnail, small, medium, large, xlarge, 2k, og + AVIF-Varianten)
    • WebP/AVIF Format aktiviert
    • Fokuspunkt-Support
    • Zusätzliche Felder (caption, credit, tags)
    • Dokumentation: docs/anleitungen/BILDOPTIMIERUNG.md
  • SEO-Erweiterungen (Erledigt: 30.11.2025)

    • Sitemap-Generator (/sitemap.xml)
    • robots.txt (/robots.txt)
    • Structured Data (JSON-LD) Helpers
    • SEO Settings Global im Admin-Panel
    • Dokumentation: docs/anleitungen/SEO_ERWEITERUNG.md
  • Suche implementieren (Erledigt: 30.11.2025)

    • Volltextsuche für Posts (/api/search)
    • Filterbare Kategorie-Ansichten (/api/posts?category=...)
    • Auto-Complete Funktion (/api/search/suggestions)
    • Rate Limiting (30 Requests/Minute)
    • TTL-Caching (60 Sekunden)
    • Dokumentation: src/lib/search.ts
  • Mehrsprachigkeit (i18n) (Erledigt: 30.11.2025)

    • Admin UI: Deutsch & Englisch (@payloadcms/translations)
    • Content Localization: DE (default), EN mit Fallback
    • Alle Collections lokalisiert (Pages, Posts, Categories, Testimonials)
    • Alle 14 Blocks lokalisiert
    • Alle Globals lokalisiert (SiteSettings, Navigation, SEOSettings)
    • 36 _locales Tabellen in PostgreSQL
    • Search API mit locale Parameter
    • Frontend Locale Routing (/[locale]/...)
    • Hinweis: Datenbank wurde zurückgesetzt (war leer)

Niedrige Priorität

  • Analytics Integration

    • 1. 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
    • 2. 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
    • 3. Cookie Inventory
      • Google Ads Cookies (_gcl_au, _gcl_aw, IDE) zur Cookie Inventory Collection hinzufügen
    • 4. 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
    • Dokumentation: docs/anleitungen/ANALYTICS_IMPLEMENTATION_GUIDE.md
  • Redis Caching (Erledigt: 05.12.2025)

    • Redis-Cache für API-Responses
    • TTL-basierte Invalidierung
    • Pattern-basierte Cache-Invalidierung
    • CDN-Integration (Cloudflare) (TODO)
  • [~] Backup-System

    • Manuelle Datenbank-Backups (pg_dump)
    • SQL-Dateien in .gitignore
    • Backup via Git (temporär für Migration)
    • Automatische Datenbank-Backups (Cron)
    • Media-Backup zu S3/MinIO
    • Disaster Recovery Plan
    • Backup-Rotation (30 Tage Retention)
  • Monitoring & Logging

    • Sentry Error Tracking
    • Prometheus Metrics
    • Grafana Dashboard

Phase 4: Tenant-spezifische Features

porwoll.de

  • Immobilien-Collection (falls benötigt)
  • Objektsuche
  • Kontaktformular mit Objekt-Referenz

complexcaresolutions.de (C2S)

  • Team-Collection
  • Leistungs-Übersicht
  • Karriere-Seite mit Stellenangeboten

gunshin.de / Fotografin-Portfolio

  • Portfolio-Categories Collection (Erledigt: 06.12.2025)
    • Name, Slug, Beschreibung (lokalisiert)
    • Cover-Bild, Reihenfolge, Aktiv-Status
  • Portfolios Collection (Erledigt: 06.12.2025)
    • Titel, Beschreibung, Excerpt (lokalisiert)
    • Kategorie-Beziehung
    • Cover-Bild + Galerie-Bilder mit Captions
    • Projekt-Details (Kunde, Ort, Datum, Ausrüstung)
    • Status (draft/published/archived)
    • isFeatured, SEO-Felder
  • Projekt-Galerie Frontend
  • Referenzen-Slider

zweitmein.ng

  • Produkt-Collection (falls E-Commerce)
  • FAQ-Collection
  • Preistabellen

Technische Schulden

  • TypeScript Strict Mode aktivieren
  • Unit Tests für Access Control
  • E2E Tests für kritische Flows
  • API-Dokumentation automatisch generieren (OpenAPI)
  • Code-Review für Security-relevante Bereiche
  • Performance-Audit der Datenbank-Queries

Dokumentation

  • CLAUDE.md (Projekt-Übersicht)
  • UNIVERSAL_FEATURES.md (Collections & Blocks)
  • API_ANLEITUNG.md (REST API Guide)
  • TODO.md (Diese Datei)
  • BILDOPTIMIERUNG.md (Sharp & Image Sizes)
  • SEO_ERWEITERUNG.md (SEO Features)
  • ANALYTICS_IMPLEMENTATION_GUIDE.md (Umami & Google Ads)
  • Techstack_Dokumentation_12_2025.md (Infrastruktur & Deployment)
  • DEPLOYMENT.md (Deployment-Prozess)
  • FRONTEND_INTEGRATION.md (Next.js Guide)
  • SECURITY.md (Sicherheitsrichtlinien)

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

  1. Tenant-Domains in DB eintragen
  2. E-Mail-Adapter konfigurieren
  3. Frontend-Entwicklung starten
  4. Erste Inhalte einpflegen (DE + EN)
  5. Admin-User für Tenants erstellen

Kontakte & Ressourcen


Letzte Aktualisierung: 07.12.2025 (E-Mail-System, Portfolio-Collections, Redis Caching)