cms.c2sgmbh/docs/anleitungen/TODO.md
Martin Porwoll a88e4f60d0 test: add E2E and integration tests with documentation
Tests:
- Update frontend.e2e.spec.ts with locale testing
- Add search.e2e.spec.ts for search functionality
- Add i18n.int.spec.ts for localization tests
- Add search.int.spec.ts for search integration
- Update playwright.config.ts

Documentation:
- Add CLAUDE.md with project instructions
- Add docs/ directory with detailed documentation
- Add scripts/ for utility scripts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 08:19:52 +00:00

247 lines
6.3 KiB
Markdown

# To-Do-Liste - Payload CMS Multi-Tenant Projekt
## Legende
- [ ] Offen
- [x] Erledigt
- [~] In Bearbeitung
- [!] Hohe Priorität
- [?] Klärungsbedarf
---
## Phase 1: Grundlagen (Abgeschlossen)
### Infrastruktur
- [x] Payload CMS 3.x Installation
- [x] PostgreSQL-Datenbank eingerichtet
- [x] PM2 Process Manager konfiguriert
- [x] Caddy Reverse Proxy mit SSL
- [x] Multi-Tenant Plugin aktiviert
### Basis-Collections
- [x] Users Collection
- [x] Media Collection
- [x] Tenants Collection
- [x] Pages Collection
### Globals
- [x] SiteSettings
- [x] Navigation
---
## Phase 2: Universal Features (Abgeschlossen)
### Collections
- [x] Posts Collection (Blog, News, Presse, Ankündigungen)
- [x] Feld `type` (blog, news, press, announcement)
- [x] Feld `isFeatured`
- [x] Feld `excerpt`
- [x] Categories Collection
- [x] Testimonials Collection
- [x] Newsletter Subscribers Collection
- [x] Double Opt-In Support
- [x] DSGVO-konforme Felder (IP, Timestamps)
- [x] Social Links Collection
### Blocks
- [x] Hero Block
- [x] Text Block
- [x] Image Text Block
- [x] Card Grid Block
- [x] Quote Block
- [x] CTA Block
- [x] Contact Form Block
- [x] Video Block
- [x] Divider Block
- [x] Timeline Block
- [x] Posts List Block
- [x] Testimonials Block
- [x] Newsletter Block
- [x] Process Steps Block
### Consent Management
- [x] Cookie Configurations Collection
- [x] Cookie Inventory Collection
- [x] Consent Logs Collection
- [x] 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
- [x] **Bild-Optimierung** (Erledigt: 30.11.2025)
- [x] Sharp Plugin konfiguriert
- [x] 11 Responsive Image Sizes definiert (thumbnail, small, medium, large, xlarge, 2k, og + AVIF-Varianten)
- [x] WebP/AVIF Format aktiviert
- [x] Fokuspunkt-Support
- [x] Zusätzliche Felder (caption, credit, tags)
- Dokumentation: `docs/anleitungen/BILDOPTIMIERUNG.md`
- [x] **SEO-Erweiterungen** (Erledigt: 30.11.2025)
- [x] Sitemap-Generator (`/sitemap.xml`)
- [x] robots.txt (`/robots.txt`)
- [x] Structured Data (JSON-LD) Helpers
- [x] SEO Settings Global im Admin-Panel
- Dokumentation: `docs/anleitungen/SEO_ERWEITERUNG.md`
- [x] **Suche implementieren** (Erledigt: 30.11.2025)
- [x] Volltextsuche für Posts (`/api/search`)
- [x] Filterbare Kategorie-Ansichten (`/api/posts?category=...`)
- [x] Auto-Complete Funktion (`/api/search/suggestions`)
- [x] Rate Limiting (30 Requests/Minute)
- [x] TTL-Caching (60 Sekunden)
- Dokumentation: `src/lib/search.ts`
- [x] **Mehrsprachigkeit (i18n)** (Erledigt: 30.11.2025)
- [x] Admin UI: Deutsch & Englisch (`@payloadcms/translations`)
- [x] Content Localization: DE (default), EN mit Fallback
- [x] Alle Collections lokalisiert (Pages, Posts, Categories, Testimonials)
- [x] Alle 14 Blocks lokalisiert
- [x] Alle Globals lokalisiert (SiteSettings, Navigation, SEOSettings)
- [x] 36 `_locales` Tabellen in PostgreSQL
- [x] Search API mit `locale` Parameter
- [x] Frontend Locale Routing (`/[locale]/...`)
- Hinweis: Datenbank wurde zurückgesetzt (war leer)
### Niedrige Priorität
- [ ] **Analytics Integration**
- Google Analytics 4 / Plausible
- Event-Tracking für Newsletter
- Conversion-Tracking
- [ ] **Caching-Strategie**
- Redis-Cache für API
- CDN-Integration (Cloudflare)
- Invalidierung bei Updates
- [ ] **Backup-System**
- Automatische Datenbank-Backups
- Media-Backup zu S3/MinIO
- Disaster Recovery Plan
- [ ] **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
- [x] CLAUDE.md (Projekt-Übersicht)
- [x] UNIVERSAL_FEATURES.md (Collections & Blocks)
- [x] API_ANLEITUNG.md (REST API Guide)
- [x] TODO.md (Diese Datei)
- [x] BILDOPTIMIERUNG.md (Sharp & Image Sizes)
- [x] SEO_ERWEITERUNG.md (SEO Features)
- [ ] 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
- **Payload CMS Docs:** https://payloadcms.com/docs
- **GitHub Issues:** https://github.com/payloadcms/payload/issues
- **Discord Community:** https://discord.com/invite/payload
---
*Letzte Aktualisierung: 30.11.2025 (Suche + Mehrsprachigkeit implementiert)*