mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-17 15:04:14 +00:00
17 KiB
17 KiB
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)
- Debian 13 Installation
- PostgreSQL 17 mit payload_db und umami_db
- Redis Cache
- Payload CMS Production (cms.c2sgmbh.de)
- Umami Analytics Production (analytics.c2sgmbh.de)
- Nginx Reverse Proxy mit Let's Encrypt
- PM2 Process Management
- Claude Code CLI
- Backup-Scripts (täglich)
- CVE-2025-55182 Hotfix
Hetzner 1 + 2 (Frontend Production)
- Hetzner 1 (78.46.87.137): blogwoman.de — Plesk, nginx-only, Passenger 6.1.0, Node 22
- Hetzner 2 (94.130.141.114): porwoll.de — Plesk, nginx-only, Passenger 6.1.0, Node 22
- GitHub Webhooks für Auto-Deploy bei Push auf main
- SSH-Zugriff von sv-payload (root, key: plesk_deploy)
- Env-Vars pro Domain (Tenant-spezifisch)
Caddy Reverse Proxy (sv-caddy)
- Caddy 2.9.x mit Cloudflare DNS Plugin
- Wildcard SSL für *.porwoll.tech
- Cloudflare DNS-Challenge
- Routing für alle Services
- Security Headers
Payload CMS
- Multi-Tenant Plugin
- Redis Caching
- Package-Versionen synchronisiert:
- Next.js 16.2.0-canary.41
- React 19.2.3
- Payload 3.76.1
- GitHub Repository (complexcaresolutions/cms.c2sgmbh)
- YouTube Analytics Dashboard (4-Tab-Dashboard mit Kanal-Auswahl)
- Admin-Nav Sidebar Refactoring (nativer Payload-Stil)
- Globaler TypeScript-Typecheck (
pnpm typecheck) wieder fehlerfrei - 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
- 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
- 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
- Community Reports:
- Tägliche/wöchentliche E-Mail-Reports
- Konfigurierbare Report-Settings
- Cron-basierter Versand
Monitoring & Alerting Dashboard
- System-Überwachung:
- CPU, RAM, Disk-Auslastung (Node.js os-Modul)
- PM2 Prozess-Status (Payload + Queue-Worker)
- Load Average, Uptime
- Service-Status:
- PostgreSQL, PgBouncer, Redis, SMTP, OAuth-Tokens, BullMQ Queues, Cron-Jobs
- Performance-Tracking:
- Response-Zeiten (Avg, P95, P99), Error-Rate, Requests/Minute
- In-Memory Ring-Buffer (10.000 Einträge)
- Alerting:
- Konfigurierbare Regeln (MonitoringAlertRules Collection)
- Multi-Channel: Email, Slack, Discord
- Cooldown-basierte Deduplizierung
- Structured Logging:
- MonitoringLogs Collection mit Level/Source-Filter
- Fire-and-forget Logger mit Payload-Fallback
- Dashboard UI:
- 5-Tab-Dashboard unter /admin/monitoring
- SSE-basierte Echtzeit-Updates
- Trend-Charts, Gauge-Widgets, Service-Karten
- Data Retention:
- Snapshots: 7 Tage, Logs: 30 Tage, Alert-History: 90 Tage
sv-frontend (Multi-Project)
- Node.js 22.x + pnpm
- AI-Tools installiert:
- Claude Code 2.0.72
- Codex CLI 0.73.0
- Gemini CLI 0.21.2
- 9 Frontend-Projekte initialisiert
- Systemd Services (Ports 3000-3008)
- SSH-Zugriff mit Key
- VS Code Remote-SSH kompatibel
Multi-Server Orchestration (Phase 1-8)
- SSH-Infrastruktur: sv-payload → sv-frontend, Hetzner 1/2 (root)
- payload-contracts Repo: Shared types, API client, block registry
- Type-Extraction aus CMS payload-types.ts
createPayloadClient()mit Tenant-IsolationcreateBlockRenderer()mit discriminated unions
- Work-Order-System: Git-basierte Koordination CMS → Frontends
- Template + Scripts (
create-work-order.sh,execute-work-order.sh)
- Template + Scripts (
- blogwoman.de Migration: Contracts-Client + Bridge-Pattern
- porwoll.de Migration: Direkte Contracts-Types, 9 Blocks
- Claude Code auf sv-frontend: v2.1.37, CLAUDE.md in allen Repos
- 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)
- 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)
- cms.c2sgmbh (Payload CMS) — Internal
- payload-contracts (Shared Types + API Client) — Internal
- frontend.porwoll.de — Live auf porwoll.de
- frontend.blogwoman.de — Live auf blogwoman.de
- frontend.caroline-porwoll.com
- frontend.caroline-porwoll.de
- frontend.complexcaresolutions.de
- frontend.gunshin.de
- frontend.sensualmoment.de
- frontend.zweitmeinu.ng
- 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
Meta (Facebook/Instagram) Kommentar-SynchronisationYouTube Thumbnail-DownloadMonitoring & Alerting DashboardMulti-Server Orchestration (8 Phasen)porwoll.de Frontend (Live auf Plesk)blogwoman.de Frontend (Live auf Plesk)CI/CD Pipelines (GitHub Actions + Plesk Webhooks)
Kurzfristig
Kontaktformular: Multi-Tenant Refactoring + Production Deployment- porwoll.de: Fehlende Blocks implementieren (~6 Blocks via Work Orders)
- blogwoman.de: Types-Bridge durch direkte Contracts-Imports ersetzen
- blogwoman.de: YouTube-Serien-Integration vervollständigen
Mittelfristig (März/April 2026)
- complexcaresolutions.de Frontend starten
- caroline-porwoll.com/de Frontend starten
- Cookie-Banner implementieren (DSGVO)
- Weitere Frontends auf Plesk deployen
Langfristig (Q2 2026)
- Alle 9 Frontends entwickeln und deployen
- AI-gestützte Kommentar-Moderation
- 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
# 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)
# SSH Zugang
ssh payload@162.55.85.18
# Deploy
~/deploy.sh
# Logs
pm2 logs payload
Hetzner 1 + 2 (Frontend Production)
# 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-submissionstenant-scoped viamultiTenantPlugin(customTenantField)ContactFormBlockrefaktoriert: Formular-Referenz statt hardcodedrecipientEmailsetSubmissionTenantHook: Tenant auto-propagation Form → SubmissionsendFormNotificationHook: E-Mail-Benachrichtigung via Tenant-SMTPFormSubmissionsOverrides: 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_IDvon 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-interactionsSync-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-notificationsSchema korrigiert (recipient,relatedVideo,read) - Verifikation:
pnpm typecheckerfolgreich (0 TypeScript-Fehler)
- Payload-Typen neu generiert (
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.shfü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) channelThumbnailUrlFeld zu YouTubeChannels hinzugefügt
- Meta Kommentar-Sync abgeschlossen:
/api/community/syncverwendet 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.mdgelöscht (redundant mit PROJECT_STATUS.md)docs/STAGING-DEPLOYMENT.mdauf 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