# Projekt Status - Februar 2026 **Stand:** 15. 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] 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. [ ] 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 ### 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