diff --git a/.env.example b/.env.example
index 8b3d774..00ff312 100644
--- a/.env.example
+++ b/.env.example
@@ -1,5 +1,39 @@
-DATABASE_URI=mongodb://127.0.0.1/your-database-name
+# Datenbank (PostgreSQL via PgBouncer)
+DATABASE_URI=postgresql://payload:YOUR_PASSWORD@127.0.0.1:6432/payload_db
PAYLOAD_SECRET=YOUR_SECRET_HERE
+PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000
+NEXT_PUBLIC_SERVER_URL=http://localhost:3000
+NODE_ENV=development
+PORT=3000
-# Prevent actual SMTP calls during tests or CI
+# E-Mail (Global Fallback)
+SMTP_HOST=smtp.example.com
+SMTP_PORT=587
+SMTP_SECURE=false
+SMTP_USER=user@example.com
+SMTP_PASS=your-password
+SMTP_FROM_ADDRESS=noreply@example.com
+SMTP_FROM_NAME=Payload CMS
+
+# Redis Cache (optional, In-Memory-Fallback)
+REDIS_URL=redis://localhost:6379
+
+# Security
+CSRF_SECRET=your-csrf-secret
+TRUST_PROXY=true
+
+# YouTube OAuth (optional)
+GOOGLE_CLIENT_ID=your-client-id
+GOOGLE_CLIENT_SECRET=your-client-secret
+YOUTUBE_REDIRECT_URI=http://localhost:3000/api/youtube/callback
+
+# Meta OAuth (optional)
+META_APP_ID=your-app-id
+META_APP_SECRET=your-app-secret
+META_REDIRECT_URI=http://localhost:3000/api/auth/meta/callback
+
+# Cron Jobs (optional)
+CRON_SECRET=your-64-char-hex
+
+# Tests
EMAIL_DELIVERY_DISABLED=false
diff --git a/BUG_REPORT_CUSTOM_VIEWS.md b/BUG_REPORT_CUSTOM_VIEWS.md
deleted file mode 100644
index 92ed8cc..0000000
--- a/BUG_REPORT_CUSTOM_VIEWS.md
+++ /dev/null
@@ -1,134 +0,0 @@
-# Bug Report: Custom Admin Components cause TypeError with path-to-regexp
-
-## Summary
-**ALL** custom admin components registered via `admin.components` cause a `TypeError: Missing parameter name at 5` error from path-to-regexp when used together with `@payloadcms/plugin-multi-tenant`. This includes `views`, `afterNavLinks`, and `beforeNavLinks`.
-
-## Environment
-- **Payload Version:** 3.69.0 (originally reported on 3.68.4)
-- **Next.js Version:** 15.5.9
-- **React Version:** 19.2.3
-- **Node.js Version:** 22.x
-- **Database:** PostgreSQL 17.6
-- **Plugin:** @payloadcms/plugin-multi-tenant 3.69.0
-
-> **Note:** Bug persists after update to 3.69.0. Custom components remain disabled.
-
-## Steps to Reproduce
-
-1. Create a Payload 3.x project with the multi-tenant plugin
-2. Add a custom view to the admin config:
-
-```typescript
-// payload.config.ts
-export default buildConfig({
- admin: {
- user: Users.slug,
- components: {
- views: {
- MyCustomView: {
- Component: '@/components/admin/MyCustomView#MyCustomView',
- path: '/my-custom-view',
- },
- },
- },
- },
- plugins: [
- multiTenantPlugin({
- tenantsSlug: 'tenants',
- collections: { /* ... */ },
- }),
- // other plugins...
- ],
-})
-```
-
-3. Create a simple client component:
-
-```tsx
-// src/components/admin/MyCustomView.tsx
-'use client'
-
-import React from 'react'
-
-export const MyCustomView: React.FC = () => {
- return (
-
-
Custom View
-
- )
-}
-
-export default MyCustomView
-```
-
-4. Build and run the project
-5. Navigate to `/admin/my-custom-view`
-
-## Expected Behavior
-The custom view should render correctly.
-
-## Actual Behavior
-A server-side error occurs with the following message in production:
-
-```
-Uncaught Error: An error occurred in the Server Components render.
-The specific message is omitted in production builds to avoid leaking sensitive details.
-```
-
-When running in development or checking server logs, the actual error is:
-
-```
-⨯ TypeError: Missing parameter name at 5
- at (.next/server/chunks/XXXX.js:5:9989)
- at (.next/server/chunks/XXXX.js:5:10666)
- at g (.next/server/chunks/XXXX.js:5:11896)
- at e (.next/server/chunks/824.js:96:517138)
- at (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:31665)
- at Array.find ()
- at (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:31644)
- at ax (.next/server/app/(payload)/admin/[[...segments]]/page.js:1:34637) {
- digest: '3964718924'
-}
-```
-
-## Additional Context
-
-### What works:
-- Admin panel WITHOUT any custom components (completely empty `admin.components` or omitted entirely)
-
-### What fails:
-- ANY custom component registered via `admin.components`, including:
- - `views` - custom admin views
- - `afterNavLinks` - components after nav links (e.g., TenantBreadcrumb)
- - `beforeNavLinks` - components before nav links
-- Even the simplest component without any dependencies triggers the error
-
-### Investigation findings:
-- The error originates from `path-to-regexp` (version 6.3.0)
-- The error occurs during route matching in `handleEndpoints.js`
-- The error message "Missing parameter name at 5" suggests an invalid route pattern like `/:` is being generated somewhere
-- This happens regardless of the view path used (tested with `/dashboard`, `/tenant-dashboard`, `/test-dashboard`)
-- The issue appears to be triggered by the combination of ANY custom component and the multi-tenant plugin
-- Initially appeared to work in development but fails consistently in production builds
-
-### Workaround
-Completely disable ALL custom components:
-
-```typescript
-admin: {
- user: Users.slug,
- // ALL custom components disabled - triggers path-to-regexp error with multi-tenant plugin
- // components: {
- // afterNavLinks: ['...'],
- // beforeNavLinks: ['...'],
- // views: { ... },
- // },
-},
-```
-
-## Related Plugins
-- `@payloadcms/plugin-multi-tenant` (may be related to the conflict)
-- `@payloadcms/plugin-redirects`
-- `@payloadcms/plugin-seo`
-- `@payloadcms/plugin-form-builder`
-- `@payloadcms/plugin-nested-docs`
diff --git a/CLAUDE.md b/CLAUDE.md
index 24d0b54..1ea9a64 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -10,8 +10,8 @@ Multi-Tenant CMS für 3 aktive Websites unter einer Payload CMS 3.x Instanz:
## Tech Stack
-- **CMS:** Payload CMS 3.69.0 (⚠️ 3.72.0 hat Login-Bug, siehe GitHub #15243)
-- **Framework:** Next.js 15.5.9
+- **CMS:** Payload CMS 3.76.1
+- **Framework:** Next.js 16.2.0-canary.41
- **React:** 19.2.3
- **Sprache:** TypeScript
- **Runtime:** Node.js 22.x
@@ -397,6 +397,7 @@ CREATE TABLE IF NOT EXISTS "{collection}_{array_field}" (
- **Plugin ImportMap:** Nach Plugin-Änderungen `pnpm payload generate:importmap` ausführen
- **User-Tenant-Zuweisung:** Neue User müssen manuell Tenants zugewiesen bekommen
- **Admin Login:** Custom Route mit Audit-Logging, unterstützt JSON und `_payload` FormData
+- **Queue Worker:** Benötigt `tsx` als explizite devDependency (für TypeScript-Ausführung via PM2)
## Build-Konfiguration
@@ -441,6 +442,7 @@ Das System unterstützt Deutsch (default) und Englisch:
- **Timeline API:** https://pl.porwoll.tech/api/timelines (GET, öffentlich, tenant required)
- **Workflows API:** https://pl.porwoll.tech/api/workflows (GET, öffentlich, tenant required)
- **Data Retention API:** https://pl.porwoll.tech/api/retention (GET/POST, Super-Admin erforderlich)
+- **YouTube Analytics:** https://pl.porwoll.tech/admin/youtube-analytics (Admin View, Auth erforderlich)
## Security-Features
@@ -1330,4 +1332,4 @@ ssh payload@162.55.85.18
### Scripts & Backup
- `scripts/backup/README.md` - Backup-System Dokumentation
-*Letzte Aktualisierung: 26.01.2026 (Redundanzen bereinigt, Collections aktualisiert)*
+*Letzte Aktualisierung: 13.02.2026 (Versionen aktualisiert: Payload 3.76.1, Next.js 16.2.0-canary.41)*
diff --git a/README.md b/README.md
index 32054dd..28b4538 100644
--- a/README.md
+++ b/README.md
@@ -1,71 +1,66 @@
-# Payload Blank Template
+# Payload CMS Multi-Tenant
-This template comes configured with the bare minimum to get started on anything you need.
+Multi-Tenant Headless CMS for 3 active websites under a single Payload CMS instance.
-## Quick start
+## Tech Stack
-This template can be deployed directly from our Cloud hosting and it will setup MongoDB and cloud S3 object storage for media.
+- **CMS:** Payload CMS 3.76.1
+- **Framework:** Next.js 16.2.0-canary.41
+- **Runtime:** Node.js 22.x
+- **Database:** PostgreSQL 17.6 (via PgBouncer)
+- **Cache:** Redis 7.x (optional, with in-memory fallback)
+- **Package Manager:** pnpm
-## Quick Start - local setup
+## Tenants
-To spin up this template locally, follow these steps:
+| Tenant | Slug | Domain |
+|--------|------|--------|
+| porwoll.de | porwoll | porwoll.de |
+| Complex Care Solutions GmbH | c2s | complexcaresolutions.de |
+| Gunshin | gunshin | gunshin.de |
-### Clone
+## Quick Start
-After you click the `Deploy` button above, you'll want to have standalone copy of this repo on your machine. If you've already cloned this repo, skip to [Development](#development).
+### Prerequisites
-### Development
+- Node.js 22.x
+- pnpm
+- PostgreSQL 17 (or PgBouncer connection)
+- Redis (optional)
-1. First [clone the repo](#clone) if you have not done so already
-2. `cd my-project && cp .env.example .env` to copy the example environment variables. You'll need to add the `MONGODB_URI` from your Cloud project to your `.env` if you want to use S3 storage and the MongoDB database that was created for you.
+### Setup
-3. `pnpm install && pnpm dev` to install dependencies and start the dev server
-4. open `http://localhost:3000` to open the app in your browser
+```bash
+# Install dependencies
+pnpm install
-That's it! Changes made in `./src` will be reflected in your app. Follow the on-screen instructions to login and create your first admin user. Then check out [Production](#production) once you're ready to build and serve your app, and [Deployment](#deployment) when you're ready to go live.
+# Copy environment variables
+cp .env.example .env
+# Edit .env with your database credentials
-#### Docker (Optional)
+# Run development server
+pnpm dev
+```
-If you prefer to use Docker for local development instead of a local MongoDB instance, the provided docker-compose.yml file can be used.
+Open [http://localhost:3000/admin](http://localhost:3000/admin) to access the admin panel.
-To do so, follow these steps:
+## Commands
-- Modify the `MONGODB_URI` in your `.env` file to `mongodb://127.0.0.1/`
-- Modify the `docker-compose.yml` file's `MONGODB_URI` to match the above ``
-- Run `docker-compose up` to start the database, optionally pass `-d` to run in the background.
+```bash
+pnpm dev # Development server
+pnpm build # Production build
+pnpm payload migrate # Run migrations
+pnpm payload migrate:create # Create migration
+pnpm test # Run tests
+pnpm lint # ESLint
+pnpm typecheck # TypeScript check
+```
-## How it works
+## Documentation
-The Payload config is tailored specifically to the needs of most websites. It is pre-configured in the following ways:
+- **[CLAUDE.md](./CLAUDE.md)** - Full project documentation (collections, blocks, APIs, architecture)
+- **[docs/](./docs/)** - Additional documentation (infrastructure, deployment, security)
-### Collections
+## Email Testing
-See the [Collections](https://payloadcms.com/docs/configuration/collections) docs for details on how to extend this functionality.
-
-- #### Users (Authentication)
-
- Users are auth-enabled collections that have access to the admin panel.
-
- For additional help, see the official [Auth Example](https://github.com/payloadcms/payload/tree/main/examples/auth) or the [Authentication](https://payloadcms.com/docs/authentication/overview#authentication-overview) docs.
-
-- #### Media
-
- This is the uploads enabled collection. It features pre-configured sizes, focal point and manual resizing to help you manage your pictures.
-
-### Docker
-
-Alternatively, you can use [Docker](https://www.docker.com) to spin up this template locally. To do so, follow these steps:
-
-1. Follow [steps 1 and 2 from above](#development), the docker-compose file will automatically use the `.env` file in your project root
-1. Next run `docker-compose up`
-1. Follow [steps 4 and 5 from above](#development) to login and create your first admin user
-
-That's it! The Docker instance will help you get up and running quickly while also standardizing the development environment across your teams.
-
-## Email testing
-
-Security integration tests exercise the SMTP endpoints and will hang if no mail server is reachable. Set `EMAIL_DELIVERY_DISABLED=true` (default is `false`) to bypass the actual SMTP call while still logging the request. This flag is automatically honored in `NODE_ENV=test`, so CI pipelines can safely run the security test suite without external dependencies.
-
-## Questions
-
-If you have any issues or questions, reach out to us on [Discord](https://discord.com/invite/payload) or start a [GitHub discussion](https://github.com/payloadcms/payload/discussions).
+Set `EMAIL_DELIVERY_DISABLED=true` to bypass SMTP calls during testing. This flag is automatically honored in `NODE_ENV=test`.
diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md
index 324e2ce..8d26c98 100644
--- a/docs/INFRASTRUCTURE.md
+++ b/docs/INFRASTRUCTURE.md
@@ -1,6 +1,6 @@
# Infrastruktur Dokumentation
-*Letzte Aktualisierung: 29. Dezember 2025*
+*Letzte Aktualisierung: 13. Februar 2026*
## Gesamtübersicht
@@ -84,7 +84,7 @@
### Software Stack
- Node.js 22.x
- pnpm
-- Next.js 15.5.9
+- Next.js 16.2.0-canary.41
- Claude Code (aktuell)
- Codex CLI (aktuell)
- Gemini CLI (aktuell)
@@ -161,8 +161,8 @@ systemctl status frontend-*
- **SSH:** `ssh payload@162.55.85.18`
### Software
-- Payload CMS 3.69.0
-- Next.js 15.5.9
+- Payload CMS 3.76.1
+- Next.js 16.2.0-canary.41
- React 19.2.3
- PostgreSQL 17
- Redis
@@ -239,4 +239,4 @@ systemctl start frontend-porwoll
---
-*Dokumentation: Martin Porwoll | Complex Care Solutions GmbH | 29.12.2025*
+*Dokumentation: Martin Porwoll | Complex Care Solutions GmbH | 13.02.2026*
diff --git a/docs/KONZEPT-KI-ANLEITUNG.md b/docs/KONZEPT-KI-ANLEITUNG.md
index b7abd98..f42e57f 100644
--- a/docs/KONZEPT-KI-ANLEITUNG.md
+++ b/docs/KONZEPT-KI-ANLEITUNG.md
@@ -8,7 +8,7 @@ Diese Anleitung erklärt, wie du als Konzept-KI einen strukturierten Prompt für
Das Payload CMS ist ein Multi-Tenant-fähiges Headless CMS mit folgenden Eigenschaften:
-- **Framework:** Payload 3.69.0 + Next.js 15.5.9
+- **Framework:** Payload 3.76.1 + Next.js 16.2.0-canary.41
- **Datenbank:** PostgreSQL 17
- **Sprachen:** Deutsch (de, Standard) und Englisch (en)
- **Tenant-Isolation:** Jede Collection ist automatisch tenant-spezifisch
diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md
index a48ab0d..1e5a180 100644
--- a/docs/PROJECT_STATUS.md
+++ b/docs/PROJECT_STATUS.md
@@ -1,11 +1,11 @@
-# Projekt Status - Januar 2026
+# Projekt Status - Februar 2026
-**Stand:** 17. Januar 2026
+**Stand:** 13. Februar 2026
## Zusammenfassung
Die komplette Entwicklungsinfrastruktur ist eingerichtet und funktionsfähig:
-- Payload CMS Multi-Tenant (Dev + Prod) - **v3.69.0 stabil**
+- Payload CMS Multi-Tenant (Dev + Prod) - **v3.76.1 stabil**
- Multi-Frontend Development Environment
- AI-gestützte Entwicklungstools
- Reverse Proxy Stack (Caddy + Nginx)
@@ -54,10 +54,12 @@ Die komplette Entwicklungsinfrastruktur ist eingerichtet und funktionsfähig:
- [x] Multi-Tenant Plugin
- [x] Redis Caching
- [x] Package-Versionen synchronisiert:
- - Next.js 15.5.9
+ - Next.js 16.2.0-canary.41
- React 19.2.3
- - Payload 3.69.0 (⚠️ 3.72.0 hat Login-Bug bei hasMany Relationships)
+ - 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)
### Community Management System
@@ -110,7 +112,6 @@ Organisation: **complexcaresolutions** (Internal)
| Priorität | Aufgabe | Status |
|-----------|---------|--------|
-| 🔴 | Payload 3.72.0+ Login-Bug - hasMany Relationships | Bug-Report: #15243 |
| 🟡 | Meta (Facebook/Instagram) Kommentar-Sync | In Entwicklung |
| 🟡 | YouTube Thumbnail-Download für Offline-Anzeige | Geplant |
@@ -121,10 +122,8 @@ Organisation: **complexcaresolutions** (Internal)
### Kurzfristig (diese Woche)
1. [ ] Meta (Facebook/Instagram) Kommentar-Synchronisation fertigstellen
-2. [ ] YouTube Analytics-Dashboard implementieren
-3. [ ] Payload 3.72+ Update testen (nach Bug-Fix)
-### Mittelfristig (Januar/Februar 2026)
+### Mittelfristig (Februar/März 2026)
4. [ ] porwoll.de Frontend-Entwicklung
5. [ ] blogwoman.de Frontend mit YouTube-Integration
@@ -197,6 +196,25 @@ pm2 logs payload
## 📝 Änderungsprotokoll
+### 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)
diff --git a/docs/anleitungen/framework-monitoring.md b/docs/anleitungen/framework-monitoring.md
index 5f0e8e0..9415c1f 100644
--- a/docs/anleitungen/framework-monitoring.md
+++ b/docs/anleitungen/framework-monitoring.md
@@ -2,13 +2,11 @@
Dieser Leitfaden beschreibt, wie wir Payload-Updates evaluieren und wann wir Upgrades durchführen können.
-**Aktueller Stand (Januar 2026):**
-- Payload: **3.69.0** (stabil)
-- Next.js: **15.5.9**
+**Aktueller Stand (Februar 2026):**
+- Payload: **3.76.1** (stabil)
+- Next.js: **16.2.0-canary.41**
- React: **19.2.3**
-> ⚠️ **Payload 3.72.0 Bug:** Login schlägt fehl bei Usern mit hasMany Relationships (tenants, youtubeChannels). GitHub Issue: #15243. Bei 3.69.0 bleiben bis Fix verfügbar.
-
---
## 1. Versions-Check
@@ -43,7 +41,7 @@ Der Befehl führt `pnpm outdated` für Payload-Core, Plugins und Next.js aus.
```bash
pnpm lint && pnpm typecheck && pnpm test && pnpm build
```
-5. **Login-Test mit User mit Relationships** (kritisch nach 3.72.0 Bug)
+5. **Login-Test mit User mit Relationships**
6. Bei Erfolg: PR in `develop`
---
@@ -52,6 +50,6 @@ Der Befehl führt `pnpm outdated` für Payload-Core, Plugins und Next.js aus.
| Version | Problem | Status |
|---------|---------|--------|
-| 3.72.0 | Login-Bug bei hasMany Relationships | Offen (GitHub #15243) |
+| 3.72.0 | Login-Bug bei hasMany Relationships | Behoben in 3.76.1 |
-*Letzte Aktualisierung: 17.01.2026*
+*Letzte Aktualisierung: 13.02.2026*