# Projekt Status - Februar 2026

**Stand:** 17. Februar 2026

## Zusammenfassung

Die komplette Entwicklungsinfrastruktur ist eingerichtet und funktionsfähig:
- Payload CMS Multi-Tenant (Dev + Prod) - **v3.76.1 stabil**
- Multi-Frontend Development Environment
- AI-gestützte Entwicklungstools
- Reverse Proxy Stack (Caddy + Nginx)
- Analytics (Umami)
- **Community Management System** (YouTube, Facebook, Instagram)
- **YouTube Operations Hub** (Multi-Kanal-Verwaltung)
- **Multi-Server Orchestration** (SSH, Contracts, CI/CD, Plesk Production)
- **2 Production-Sites live:** blogwoman.de + porwoll.de

---

## ✅ Abgeschlossen

### Infrastruktur VLAN 181 (Development)

| LXC | Hostname | IP | Service | Status |
|-----|----------|-----|---------|--------|
| 699 | sv-caddy | 10.10.181.99 | Caddy Reverse Proxy | ✅ Running |
| 700 | sv-payload | 10.10.181.100 | Payload CMS + Redis | ✅ Running |
| 701 | sv-postgres | 10.10.181.101 | PostgreSQL 17 + Redis Cmd | ✅ Running |
| 702 | sv-dev-payload | 10.10.181.102 | Payload Experimental | ⏸️ Stopped |
| 703 | sv-analytics | 10.10.181.103 | Umami Analytics | ✅ Running |
| 704 | sv-frontend | 10.10.181.104 | Multi-Project Next.js | ✅ Running |

### Hetzner 3 (CMS Production)

- [x] Debian 13 Installation
- [x] PostgreSQL 17 mit payload_db und umami_db
- [x] Redis Cache
- [x] Payload CMS Production (cms.c2sgmbh.de)
- [x] Umami Analytics Production (analytics.c2sgmbh.de)
- [x] Nginx Reverse Proxy mit Let's Encrypt
- [x] PM2 Process Management
- [x] Claude Code CLI
- [x] Backup-Scripts (täglich)
- [x] CVE-2025-55182 Hotfix

### Hetzner 1 + 2 (Frontend Production)

- [x] Hetzner 1 (78.46.87.137): blogwoman.de — Plesk, nginx-only, Passenger 6.1.0, Node 22
- [x] Hetzner 2 (94.130.141.114): porwoll.de — Plesk, nginx-only, Passenger 6.1.0, Node 22
- [x] GitHub Webhooks für Auto-Deploy bei Push auf main
- [x] SSH-Zugriff von sv-payload (root, key: plesk_deploy)
- [x] Env-Vars pro Domain (Tenant-spezifisch)

### Caddy Reverse Proxy (sv-caddy)

- [x] Caddy 2.9.x mit Cloudflare DNS Plugin
- [x] Wildcard SSL für *.porwoll.tech
- [x] Cloudflare DNS-Challenge
- [x] Routing für alle Services
- [x] Security Headers

### Payload CMS

- [x] Multi-Tenant Plugin
- [x] Redis Caching
- [x] Package-Versionen synchronisiert:
  - Next.js 16.2.0-canary.41
  - React 19.2.3
  - Payload 3.76.1
- [x] GitHub Repository (complexcaresolutions/cms.c2sgmbh)
- [x] YouTube Analytics Dashboard (4-Tab-Dashboard mit Kanal-Auswahl)
- [x] Admin-Nav Sidebar Refactoring (nativer Payload-Stil)
- [x] Globaler TypeScript-Typecheck (`pnpm typecheck`) wieder fehlerfrei
- [x] CI/CD Pipeline (GitHub Actions):
  - CI: ESLint, TypeScript, Tests, Build, E2E
  - Security: Gitleaks, pnpm audit, CodeQL
  - Staging: Auto-Deploy auf develop-Push
  - Production: Manuelles Deploy mit Backup + Rollback

### Community Management System

- [x] **YouTube Integration:**
  - YouTubeChannels Collection (Multi-Kanal-Verwaltung)
  - YouTubeContent Collection (Videos + Shorts)
  - YtSeries Collection (Serien mit Branding)
  - YtNotifications Collection (Handlungsbedarf)
  - YouTube Operations Dashboard
  - Automatische Kommentar-Synchronisation
- [x] **Meta Integration (Facebook + Instagram):**
  - SocialAccounts Collection (OAuth-Verbindungen)
  - Meta OAuth Flow mit Long-Lived Token (60 Tage)
  - FacebookSyncService + InstagramSyncService
  - Kommentar-Synchronisation über UnifiedSyncService
  - Community Inbox mit Plattform-Filter (YouTube + Facebook + Instagram)
  - Community Analytics Dashboard
- [x] **Community Reports:**
  - Tägliche/wöchentliche E-Mail-Reports
  - Konfigurierbare Report-Settings
  - Cron-basierter Versand

### Monitoring & Alerting Dashboard

- [x] **System-Überwachung:**
  - CPU, RAM, Disk-Auslastung (Node.js os-Modul)
  - PM2 Prozess-Status (Payload + Queue-Worker)
  - Load Average, Uptime
- [x] **Service-Status:**
  - PostgreSQL, PgBouncer, Redis, SMTP, OAuth-Tokens, BullMQ Queues, Cron-Jobs
- [x] **Performance-Tracking:**
  - Response-Zeiten (Avg, P95, P99), Error-Rate, Requests/Minute
  - In-Memory Ring-Buffer (10.000 Einträge)
- [x] **Alerting:**
  - Konfigurierbare Regeln (MonitoringAlertRules Collection)
  - Multi-Channel: Email, Slack, Discord
  - Cooldown-basierte Deduplizierung
- [x] **Structured Logging:**
  - MonitoringLogs Collection mit Level/Source-Filter
  - Fire-and-forget Logger mit Payload-Fallback
- [x] **Dashboard UI:**
  - 5-Tab-Dashboard unter /admin/monitoring
  - SSE-basierte Echtzeit-Updates
  - Trend-Charts, Gauge-Widgets, Service-Karten
- [x] **Data Retention:**
  - Snapshots: 7 Tage, Logs: 30 Tage, Alert-History: 90 Tage

### sv-frontend (Multi-Project)

- [x] Node.js 22.x + pnpm
- [x] AI-Tools installiert:
  - Claude Code 2.0.72
  - Codex CLI 0.73.0
  - Gemini CLI 0.21.2
- [x] 9 Frontend-Projekte initialisiert
- [x] Systemd Services (Ports 3000-3008)
- [x] SSH-Zugriff mit Key
- [x] VS Code Remote-SSH kompatibel

### Multi-Server Orchestration (Phase 1-8)

- [x] **SSH-Infrastruktur:** sv-payload → sv-frontend, Hetzner 1/2 (root)
- [x] **payload-contracts Repo:** Shared types, API client, block registry
  - Type-Extraction aus CMS payload-types.ts
  - `createPayloadClient()` mit Tenant-Isolation
  - `createBlockRenderer()` mit discriminated unions
- [x] **Work-Order-System:** Git-basierte Koordination CMS → Frontends
  - Template + Scripts (`create-work-order.sh`, `execute-work-order.sh`)
- [x] **blogwoman.de Migration:** Contracts-Client + Bridge-Pattern
- [x] **porwoll.de Migration:** Direkte Contracts-Types, 9 Blocks
- [x] **Claude Code auf sv-frontend:** v2.1.37, CLAUDE.md in allen Repos
- [x] **Plesk Production Deployment:**
  - Hetzner 1 (78.46.87.137): blogwoman.de — nginx-only + Passenger
  - Hetzner 2 (94.130.141.114): porwoll.de — nginx-only + Passenger
  - GitHub Webhooks für Auto-Deploy (Push main → Plesk Git Pull → Build)
- [x] **CI/CD GitHub Actions:**
  - CI: Lint + Build auf push develop/main
  - Staging Deploy: SSH via UDM Pro SE Port-Forward (37.24.237.181:2204)
  - Production Deploy: Plesk Git-Integration (Webhook)

### GitHub Repositories

Organisation: **complexcaresolutions** (Public Frontend-Repos)

- [x] cms.c2sgmbh (Payload CMS) — Internal
- [x] payload-contracts (Shared Types + API Client) — Internal
- [x] frontend.porwoll.de — **Live auf porwoll.de**
- [x] frontend.blogwoman.de — **Live auf blogwoman.de**
- [x] frontend.caroline-porwoll.com
- [x] frontend.caroline-porwoll.de
- [x] frontend.complexcaresolutions.de
- [x] frontend.gunshin.de
- [x] frontend.sensualmoment.de
- [x] frontend.zweitmeinu.ng
- [x] frontend.zytoskandal.de

---

## ⚠️ Kritische Aufgaben

| Priorität | Aufgabe | Status |
|-----------|---------|--------|
| ✅ | Meta (Facebook/Instagram) Kommentar-Sync | Erledigt |
| ✅ | YouTube Thumbnail-Download für Offline-Anzeige | Erledigt |
| ✅ | Monitoring & Alerting Dashboard | Erledigt |

---

## 🔜 Nächste Schritte

### Erledigt

1. [x] ~~Meta (Facebook/Instagram) Kommentar-Synchronisation~~
2. [x] ~~YouTube Thumbnail-Download~~
3. [x] ~~Monitoring & Alerting Dashboard~~
4. [x] ~~Multi-Server Orchestration (8 Phasen)~~
5. [x] ~~porwoll.de Frontend (Live auf Plesk)~~
6. [x] ~~blogwoman.de Frontend (Live auf Plesk)~~
7. [x] ~~CI/CD Pipelines (GitHub Actions + Plesk Webhooks)~~

### Kurzfristig

8. [x] ~~Kontaktformular: Multi-Tenant Refactoring + Production Deployment~~
9. [ ] porwoll.de: Fehlende Blocks implementieren (~6 Blocks via Work Orders)
9. [ ] blogwoman.de: Types-Bridge durch direkte Contracts-Imports ersetzen
10. [ ] blogwoman.de: YouTube-Serien-Integration vervollständigen

### Mittelfristig (März/April 2026)

11. [ ] complexcaresolutions.de Frontend starten
12. [ ] caroline-porwoll.com/de Frontend starten
13. [ ] Cookie-Banner implementieren (DSGVO)
14. [ ] Weitere Frontends auf Plesk deployen

### Langfristig (Q2 2026)

15. [ ] Alle 9 Frontends entwickeln und deployen
16. [ ] AI-gestützte Kommentar-Moderation
17. [ ] Performance-Optimierung (ISR, Edge Caching)

---

## 📊 Service-URLs

### Development (porwoll.tech)

| Service | URL | Status |
|---------|-----|--------|
| Portal | https://porwoll.tech | ✅ |
| Payload CMS | https://pl.porwoll.tech | ✅ |
| Redis Commander | https://redis.porwoll.tech | ✅ |
| Umami Analytics | https://umami.porwoll.tech | ✅ |
| Frontend porwoll.de | https://porwoll-dev.porwoll.tech | ✅ |
| (8 weitere) | https://*-dev.porwoll.tech | ⏸️ On-Demand |

### Production (Hetzner)

| Service | URL | Server | Status |
|---------|-----|--------|--------|
| Payload CMS | https://cms.c2sgmbh.de | Hetzner 3 | ✅ |
| Umami Analytics | https://analytics.c2sgmbh.de | Hetzner 3 | ✅ |
| blogwoman.de | https://blogwoman.de | Hetzner 1 | ✅ |
| porwoll.de | https://porwoll.de | Hetzner 2 | ✅ |

---

## 🔧 Quick Commands

### sv-frontend

```bash
# SSH Zugang
ssh frontend@10.10.181.104

# Service starten/stoppen
systemctl start frontend-porwoll
systemctl stop frontend-porwoll

# AI-Tools
claude  # Claude Code
codex   # Codex CLI
gemini  # Gemini CLI
```

### Hetzner 3 (CMS Production)

```bash
# SSH Zugang
ssh payload@162.55.85.18

# Deploy
~/deploy.sh

# Logs
pm2 logs payload
```

### Hetzner 1 + 2 (Frontend Production)

```bash
# SSH Zugang (von sv-payload)
ssh hetzner1    # 78.46.87.137 - blogwoman.de
ssh hetzner2    # 94.130.141.114 - porwoll.de

# Logs
ssh hetzner1 "passenger-status"
ssh hetzner2 "passenger-status"

# Git-Status prüfen
ssh hetzner1 "cd /var/www/vhosts/blogwoman.de/httpdocs && git log --oneline -3"
ssh hetzner2 "cd /var/www/vhosts/porwoll.de/httpdocs && git log --oneline -3"
```

---

## 📝 Änderungsprotokoll

### 17.02.2026
- **Kontaktformular Multi-Tenant Refactoring:**
  - `forms` + `form-submissions` tenant-scoped via `multiTenantPlugin` (customTenantField)
  - `ContactFormBlock` refaktoriert: Formular-Referenz statt hardcoded `recipientEmail`
  - `setSubmissionTenant` Hook: Tenant auto-propagation Form → Submission
  - `sendFormNotification` Hook: E-Mail-Benachrichtigung via Tenant-SMTP
  - `FormSubmissionsOverrides`: Tenant-Feld, Status-Workflow, Notizen, Antwort-Tracking
  - Migration: `20260217_120000_add_tenant_to_forms.ts`
  - Production (porwoll.de): Formular erstellt, Block verknüpft, E2E getestet (inkl. E-Mail-Empfang)
  - Plesk Hetzner 2: `NEXT_PUBLIC_TENANT_ID` von 1 auf 4 korrigiert (war Ursache für site-wide 404s)
- **Globaler Typecheck stabilisiert (Commit `4386ac5`):**
  - Payload-Typen neu generiert (`src/payload-types.ts`) und Typkonflikte über API-Routen, Integrationen, Monitoring und Reporting bereinigt
  - `community-interactions` Sync-Pfade (YouTube/Facebook/Instagram) auf Pflichtfelder und kompatible Literal-Typen angepasst
  - Monitoring- und Alerting-Typen konsolidiert (u. a. Cooldown-Keying im AlertEvaluator)
  - RulesEngine-Notification-Payload auf aktuelles `yt-notifications` Schema korrigiert (`recipient`, `relatedVideo`, `read`)
  - Verifikation: `pnpm typecheck` erfolgreich (0 TypeScript-Fehler)

### 15.02.2026
- **Multi-Server Orchestration (Phase 1-8) abgeschlossen:**
  - SSH-Infrastruktur: sv-payload → sv-frontend (key: frontend_deploy), Hetzner 1/2 (key: plesk_deploy)
  - payload-contracts Repo: Shared types, API client, block registry (Git-Dependency)
  - Work-Order-System: `create-work-order.sh` + `execute-work-order.sh` für CMS→Frontend-Koordination
  - blogwoman.de: Migration auf Contracts-Client (Bridge-Pattern), live auf Hetzner 1
  - porwoll.de: Direkte Contracts-Types, 9 Blocks, live auf Hetzner 2
  - Plesk Production: nginx-only + Passenger 6.1.0, GitHub Webhooks (Auto-Deploy)
  - CI/CD: Lint+Build CI, Staging-Deploy via SSH (UDM Pro SE Port-Forward 37.24.237.181:2204)
  - Claude Code v2.1.37 auf sv-frontend mit CLAUDE.md in allen Repos
- **Monitoring & Alerting Dashboard implementiert:**
  - 4 neue Collections: MonitoringSnapshots, MonitoringLogs, MonitoringAlertRules, MonitoringAlertHistory
  - Backend-Services: MonitoringService, PerformanceTracker, MonitoringLogger, AlertEvaluator, SnapshotCollector
  - 8 REST-Endpoints unter /api/monitoring/* + SSE-Stream
  - 5-Tab Admin Dashboard (System Health, Services, Performance, Alerts, Logs)
  - Data Retention Policies (7d/30d/90d)
  - 31 Tests für Monitoring-Module (Types, Service, Tracker, Logger, Evaluator)
  - Feature-Branch: feature/monitoring-dashboard

### 14.02.2026
- **YouTube Thumbnail-Download implementiert:**
  - `downloadAndUploadImage()` Utility für Bild-Download → Payload Media
  - afterChange Hook auf YouTubeContent: Auto-Download bei leerem Thumbnail
  - afterChange Hook auf YouTubeChannels: Auto-Download Kanalbild
  - Bulk-Endpoint: `POST /api/youtube/thumbnails/bulk` (Super-Admin)
  - `channelThumbnailUrl` Feld zu YouTubeChannels hinzugefügt
- **Meta Kommentar-Sync abgeschlossen:**
  - `/api/community/sync` verwendet jetzt UnifiedSyncService (alle Plattformen)
  - Vorher: Nur YouTube-Sync über Legacy-Service
  - Optionale Plattform-Filterung im Request-Body
- **CI/CD Pipeline fertiggestellt:**
  - ESLint, TypeScript, Tests, Build, E2E in CI
  - Staging Auto-Deploy bei Push auf develop
  - Production Deploy mit Backup + Auto-Rollback
  - Security Scanning (Gitleaks, CodeQL, pnpm audit)
- **CLAUDE.md Dokumentation erweitert:**
  - Community Management System vollständig dokumentiert
  - 14 API-Endpoints, Architektur-Diagramm, Meta-Integration
  - CI/CD Pipeline dokumentiert

### 13.02.2026
- **Payload CMS 3.69.0 → 3.76.1 Upgrade:**
  - Login-Bug (#15243) mit hasMany Relationships ist in 3.76.1 behoben
  - Custom Admin Views funktionieren wieder (path-to-regexp Bug gefixt)
- **Next.js 15.5.9 → 16.2.0-canary.41 Upgrade**
- **YouTube Analytics Dashboard implementiert:**
  - 4-Tab-Dashboard (Übersicht, Videos, Audience, Engagement)
  - Kanal-Auswahl für Multi-Channel-Support
  - Tab-Switch-Crash und Channel-Selector Bugs gefixt
- **Admin-Nav Sidebar Refactoring:**
  - Sidebar-Navigation auf nativen Payload-Stil umgestellt
  - Einheitliche Nav-Groups für alle Custom Views
- **tsx als explizite devDependency hinzugefügt** (Queue-Worker Abhängigkeit)
- **Dokumentation konsolidiert:**
  - Alle Versionsnummern aktualisiert
  - BUG_REPORT_CUSTOM_VIEWS.md entfernt (obsolet)
  - .env.example auf PostgreSQL korrigiert
  - README.md projektspezifisch ersetzt

### 17.01.2026
- **Dokumentation bereinigt:**
  - `docs/anleitungen/TODO.md` gelöscht (redundant mit PROJECT_STATUS.md)
  - `docs/STAGING-DEPLOYMENT.md` auf Quick Reference reduziert
- **Payload 3.72.0 Login-Bug identifiziert:**
  - Bug: Login schlägt fehl bei Usern mit hasMany Relationships (tenants, youtubeChannels)
  - GitHub Issue erstellt: #15243
  - Empfehlung: Bei 3.69.0 bleiben bis Fix verfügbar

### 09.01.2026
- **YtSeries Collection implementiert:**
  - YouTube-Serien mit eigenem Branding (Logo, Farben)
  - Relationship zu YouTubeChannels
  - YouTube-Playlist-Integration
- **Community Management Phase 2:**
  - Meta (Facebook/Instagram) OAuth-Integration
  - MetaAccounts Collection für Kontoverwaltung
  - Geplant: Kommentar-Synchronisation für Meta-Plattformen

### 05.01.2026
- **Community Management Phase 1:**
  - YouTubeChannels Collection (Multi-Kanal-Verwaltung)
  - YouTubeContent Collection (Videos + Shorts)
  - YtNotifications Collection (Handlungsbedarf-System)
  - YouTube Operations Dashboard
  - Kommentar-Synchronisation via YouTube Data API
  - Community Reports (E-Mail)

### 29.12.2025
- **Dokumentation konsolidiert und aktualisiert:**
  - CLAUDE.md: Collections (40+) und Blocks (37) vollständig dokumentiert
  - CLAUDE.md: Neue Collections (Products, Tags, Authors, Locations, Partners, Jobs, Downloads, Events)
  - CLAUDE.md: Neue Blocks (ImageSlider, Blogging, Team-Filter, Feature-Blocks, Interactive-Blocks)
  - CLAUDE.md: Globals-Abschnitt korrigiert (SiteSettings/Navigations sind jetzt Collections)
  - docs/INFRASTRUCTURE.md, docs/DEPLOYMENT.md aktualisiert
  - docs/anleitungen/*.md auf aktuelle URLs korrigiert

### 27.12.2025
- Payload CMS Update 3.68.4 → 3.69.0
- Bug-Fixes Admin Panel:
  - Login Redirect Loop behoben (formatAdminURL Fix)
  - Speichern-Button für User-Account repariert (Access Control)
  - Einstellungen-Gruppe in Navigation sichtbar (SEOSettings Access)
- Datenbank-Schema aktualisiert (site_settings_id, navigations_id)
- Nicht benötigte Dateien entfernt (custom login page, migrations_backup)
- ImportMap regeneriert

### 18.12.2025
- sv-frontend (LXC 704) komplett eingerichtet
- 9 GitHub Repositories erstellt
- Alle Next.js Projekte initialisiert
- Systemd Services für alle Frontends
- Caddy Routing für *-dev.porwoll.tech
- AI-Tools (Claude Code, Codex, Gemini) installiert
- Infrastruktur-Dokumentation aktualisiert

### 12.12.2025
- sv-caddy mit Cloudflare DNS-Challenge
- Wildcard SSL für porwoll.tech
- Redis Commander auf sv-postgres
- pgAdmin4 entfernt (MIME-Type Probleme)

### 11.12.2025
- Hetzner 3 Production Setup
- Payload CMS Migration
- Umami Analytics Production
- Redis Caching (Dev + Prod)
- Package-Versionen synchronisiert

### 26.11.2025
- Initial Payload CMS Setup
- Multi-Tenant Plugin
- PostgreSQL auf sv-postgres
- Erste Tenants angelegt
