cms.c2sgmbh/docs/anleitungen/TODO.md
Martin Porwoll f1f3273fa7 docs: update TODO list with recent achievements
- Add Git & GitHub repository setup as completed
- Mark GitHub CLI installation and configuration as done
- Add isSuperAdmin field to Users Collection
- Update Backup System status (manual backups working)
- Add Techstack documentation to completed docs
- Update last modification date to 05.12.2025

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

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

8.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-Adapter einrichten

    • SMTP-Konfiguration
    • Newsletter Double Opt-In E-Mails
    • Kontaktformular-Benachrichtigungen
  • [!] 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
  • Caching-Strategie

    • Redis-Cache für API
    • CDN-Integration (Cloudflare)
    • Invalidierung bei Updates
  • [~] 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

  • Portfolio-Collection
  • Projekt-Galerie
  • 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: 05.12.2025 (Git & GitHub Setup, isSuperAdmin Feld, Techstack-Dokumentation)