cms.c2sgmbh/docs/PROJECT_STATUS.md
Martin Porwoll 9f7a9ad558 docs: update infrastructure, project status, and frontend docs
Add Multi-Server Orchestration (Phase 1-8) to all docs:
- INFRASTRUCTURE.md: Hetzner 1/2 production servers, SSH infrastructure,
  payload-contracts, deployment workflows, port-forwarding
- PROJECT_STATUS.md: Orchestration changelog, production URLs, SSH commands
- FRONTEND.md: payload-contracts usage, CI/CD pipelines, staging/production
  deploy, work order system, ESLint config, updated tenant IDs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 22:49:38 +00:00

426 lines
15 KiB
Markdown

# 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