mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-17 17:24:12 +00:00
- 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>
8.5 KiB
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)
- GitHub CLI Installation
- Repository erstellt: https://github.com/c2s-admin/cms.c2sgmbh.git
- GitHub Authentifizierung konfiguriert
- .gitignore für sensible Dateien
- Git Remote (HTTPS) konfiguriert
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
- Feld
- 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
Consent Management
- 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
- Sitemap-Generator (
-
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
- Volltextsuche für Posts (
-
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
_localesTabellen in PostgreSQL - Search API mit
localeParameter - Frontend Locale Routing (
/[locale]/...) - Hinweis: Datenbank wurde zurückgesetzt (war leer)
- Admin UI: Deutsch & Englisch (
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.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
- 2. 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
- 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
- 1. Umami Analytics (cookieless, ohne Consent)
-
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
-
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
- Tenant-Domains in DB eintragen
- E-Mail-Adapter konfigurieren
- Frontend-Entwicklung starten
- Erste Inhalte einpflegen (DE + EN)
- Admin-User für Tenants erstellen
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: 05.12.2025 (Git & GitHub Setup, isSuperAdmin Feld, Techstack-Dokumentation)