cms.c2sgmbh/docs/anleitungen/UNIVERSAL_FEATURES.md
Martin Porwoll 6d40d81a44 docs(universal-features): comprehensive update with all collections and blocks
- Add Production API endpoints for frontend integration
- Add Newsletter API documentation with Double Opt-In flow
- Add FAQs, Team, Services, Timelines, Workflows collections
- Add FAQ, Team, Services blocks documentation
- Update all URLs to production (cms.c2sgmbh.de)
- Add Block overview table
- Add Tenant-IDs reference
- Update file structure overview
- Add changelog entries for v1.1 and v1.2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 16:10:31 +00:00

14 KiB

Universal Features - Dokumentation

Letzte Aktualisierung: 18. Dezember 2025

Übersicht

Die Universal Features erweitern das Payload CMS um wiederverwendbare Collections und Blocks für Blog, News, Testimonials, Newsletter, FAQ, Team und Prozess-Darstellungen. Alle Features sind Multi-Tenant-fähig.

Wichtig: Frontends verwenden die Production-API (cms.c2sgmbh.de).


API-Endpoints für Frontend

Collections

Collection Endpoint Beschreibung
Posts GET /api/posts Blog, News, Presse
Testimonials GET /api/testimonials Kundenbewertungen
FAQs GET /api/faqs FAQ-Einträge
Team GET /api/team Team-Mitglieder
Services GET /api/services Leistungen
Timelines GET /api/timelines Chronologische Events
Workflows GET /api/workflows Prozess-Darstellungen

Beispiel: Posts laden

// Featured Blog-Posts für Tenant C2S laden
const posts = await fetch(
  'https://cms.c2sgmbh.de/api/posts?where[tenant][equals]=4&where[type][equals]=blog&where[isFeatured][equals]=true&locale=de&limit=6'
).then(r => r.json())

Newsletter API

Endpoint Methode Beschreibung
/api/newsletter/subscribe POST Newsletter-Anmeldung
/api/newsletter/confirm GET/POST Double Opt-In Bestätigung
/api/newsletter/unsubscribe GET/POST Abmeldung
// Newsletter-Anmeldung
const response = await fetch('https://cms.c2sgmbh.de/api/newsletter/subscribe', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: 'user@example.com',
    firstName: 'Max',
    tenantId: 4,
    source: 'footer'
  })
})

Collections

1. Posts Collection

Pfad: src/collections/Posts.ts Slug: posts Admin-Gruppe: Content

Die Posts Collection dient zur Verwaltung von Blog-Artikeln, News, Pressemitteilungen und Ankündigungen.

Felder

Feld Typ Beschreibung Pflicht
title Text Titel des Beitrags Ja
slug Text URL-Pfad (unique) Ja
type Select Art des Beitrags Ja
isFeatured Checkbox Hervorgehobener Beitrag Nein
excerpt Textarea Kurzfassung (max. 300 Zeichen) Nein
featuredImage Upload Beitragsbild Nein
content RichText Hauptinhalt Ja
categories Relationship Kategorien (hasMany) Nein
author Text Autorname Nein
status Select draft/published/archived Nein
publishedAt Date Veröffentlichungsdatum Nein
meta Group SEO-Einstellungen Nein

Post-Typen

  • blog - Blog-Artikel (Standard)
  • news - News/Aktuelles
  • press - Pressemitteilung
  • announcement - Ankündigung

2. Testimonials Collection

Pfad: src/collections/Testimonials.ts Slug: testimonials Admin-Gruppe: Content

Kundenstimmen und Bewertungen für Referenz-Seiten.

Felder

Feld Typ Beschreibung Pflicht
quote Textarea Zitat/Bewertungstext Ja
author Text Name des Kunden Ja
role Text Position/Rolle Nein
company Text Unternehmen Nein
image Upload Portrait-Foto Nein
rating Number Bewertung 1-5 Sterne Nein
source Text Quelle (z.B. "Google Reviews") Nein
sourceUrl Text Link zur Original-Bewertung Nein
date Date Datum der Bewertung Nein
isActive Checkbox Sichtbarkeit Nein
order Number Sortierung Nein

3. Newsletter Subscribers Collection

Pfad: src/collections/NewsletterSubscribers.ts Slug: newsletter-subscribers Admin-Gruppe: Marketing

DSGVO-konforme Speicherung von Newsletter-Anmeldungen mit Double Opt-In.

Felder

Feld Typ Beschreibung Pflicht
email Email E-Mail-Adresse Ja
firstName Text Vorname Nein
lastName Text Nachname Nein
status Select Anmeldestatus Ja
interests Select (hasMany) Interessengebiete Nein
source Text Anmeldequelle Nein
subscribedAt Date Anmeldedatum (auto) Nein
confirmedAt Date Bestätigungsdatum (auto) Nein
unsubscribedAt Date Abmeldedatum (auto) Nein
confirmationToken Text Token für Double Opt-In (auto) Nein
ipAddress Text IP-Adresse (DSGVO) Nein
userAgent Text Browser-Info Nein

Double Opt-In Flow

  1. User meldet sich an → Status: pending, Token generiert
  2. E-Mail mit Bestätigungs-Link wird automatisch gesendet
  3. User klickt Link → Status: confirmed
  4. Willkommens-E-Mail wird gesendet
  5. Abmeldung jederzeit über Link möglich

Status-Werte

  • pending - Ausstehend (Double Opt-In)
  • confirmed - Bestätigt
  • unsubscribed - Abgemeldet
  • bounced - E-Mail nicht zustellbar

4. FAQs Collection

Pfad: src/collections/FAQs.ts Slug: faqs Admin-Gruppe: Content

Häufig gestellte Fragen mit Kategorisierung.

Felder

Feld Typ Beschreibung Pflicht
question Text Frage Ja
answer RichText Antwort Ja
category Text Kategorie Nein
order Number Sortierung Nein
isActive Checkbox Sichtbarkeit Nein

5. Team Collection

Pfad: src/collections/Team.ts Slug: team Admin-Gruppe: Content

Team-Mitglieder und Mitarbeiter.

Felder

Feld Typ Beschreibung Pflicht
name Text Name Ja
role Text Position/Rolle Nein
image Upload Portrait-Foto Nein
bio Textarea Kurzbiografie Nein
email Email E-Mail-Adresse Nein
phone Text Telefon Nein
socialLinks Array Social Media Links Nein
order Number Sortierung Nein
isActive Checkbox Sichtbarkeit Nein

6. Services Collection

Pfad: src/collections/Services.ts Slug: services Admin-Gruppe: Content

Leistungen und Dienstleistungen.

Felder

Feld Typ Beschreibung Pflicht
title Text Leistungsname Ja
slug Text URL-Pfad Ja
excerpt Textarea Kurzbeschreibung Nein
content RichText Detailbeschreibung Nein
icon Text Icon-Name Nein
image Upload Bild Nein
category Relationship Service-Kategorie Nein
order Number Sortierung Nein

7. Timelines Collection

Pfad: src/collections/Timelines.ts Slug: timelines Admin-Gruppe: Content

Chronologische Events für Geschichte, Meilensteine, Releases.

API

// Timeline laden
fetch('https://cms.c2sgmbh.de/api/timelines?tenant=4&slug=company-history&locale=de')

Timeline-Typen

  • history - Unternehmensgeschichte
  • milestones - Projektmeilensteine
  • releases - Produkt-Releases
  • career - Karriere/Lebenslauf
  • events - Ereignisse
  • process - Prozess/Ablauf

8. Workflows Collection

Pfad: src/collections/Workflows.ts Slug: workflows Admin-Gruppe: Content

Komplexe Prozesse mit Phasen, Abhängigkeiten und Status-Tracking.

API

// Workflow laden
fetch('https://cms.c2sgmbh.de/api/workflows?tenant=4&type=project&locale=de')

Workflow-Typen

  • project - Projektabläufe
  • business - Geschäftsprozesse
  • approval - Genehmigungs-Workflows
  • onboarding - Mitarbeiter-/Kundeneinführung
  • support - Support/Service-Prozesse
  • development - Entwicklungsprozesse

Blocks

Alle Blocks können in der Pages Collection verwendet werden.

Block-Übersicht

Block Slug Beschreibung
Posts List posts-list-block Blog/News-Liste
Testimonials testimonials-block Kundenstimmen
Newsletter newsletter-block Anmeldeformular
Process Steps process-steps-block Prozess-Schritte
Timeline timeline-block Chronologie
FAQ faq-block FAQ-Akkordeon
Team team-block Team-Mitglieder
Services services-block Leistungen

1. Posts List Block

Slug: posts-list-block

Zeigt eine Liste von Blog-Artikeln, News oder anderen Post-Typen an.

Konfigurationsoptionen

Option Typ Standard Beschreibung
title Text - Überschrift
subtitle Text - Untertitel
postType Select blog Beitragstyp-Filter
layout Select grid Darstellung
columns Select 3 Spaltenanzahl (bei Grid)
limit Number 6 Anzahl Beiträge
showFeaturedOnly Checkbox false Nur hervorgehobene
filterByCategory Relationship - Kategorie-Filter
showExcerpt Checkbox true Kurzfassung anzeigen
showDate Checkbox true Datum anzeigen
showAuthor Checkbox false Autor anzeigen
showCategory Checkbox true Kategorie anzeigen
showPagination Checkbox false Pagination
showReadMore Checkbox true "Alle anzeigen" Link
backgroundColor Select white Hintergrundfarbe

Layout-Optionen

  • grid - Karten im Grid
  • list - Listenansicht
  • featured - Featured + Grid
  • compact - Kompakt (für Sidebar)
  • masonry - Masonry-Layout

2. Testimonials Block

Slug: testimonials-block

Zeigt Kundenstimmen aus der Testimonials Collection.

Layout-Optionen

  • slider - Karussell
  • grid - Karten im Grid
  • single - Einzeln (Featured)
  • masonry - Masonry-Layout
  • list - Listenansicht

3. Newsletter Block

Slug: newsletter-block

Anmeldeformular für Newsletter mit DSGVO-Hinweis.

Layout-Optionen

  • inline - Eingabe + Button nebeneinander
  • stacked - Untereinander
  • with-image - Mit Bild (50/50)
  • minimal - Nur Input
  • card - Karten-Design

4. FAQ Block

Slug: faq-block

FAQ-Akkordeon mit Schema.org Markup.

Konfigurationsoptionen

Option Typ Beschreibung
title Text Überschrift
subtitle Text Untertitel
displayMode Select all / selected / byCategory
selectedFaqs Relationship Handverlesene FAQs
filterCategory Text Kategorie-Filter
layout Select accordion / list / grid
expandFirst Checkbox Erste FAQ offen
showSchema Checkbox JSON-LD generieren

5. Team Block

Slug: team-block

Team-Mitglieder aus der Team Collection.

Layout-Optionen

  • grid - Karten im Grid
  • list - Listenansicht
  • carousel - Karussell
  • compact - Kompakt

6. Services Block

Slug: services-block

Leistungen aus der Services Collection.

Layout-Optionen

  • grid - Karten im Grid
  • list - Listenansicht mit Details
  • icons - Icon-Grid
  • tabs - Tab-Navigation

Multi-Tenant Konfiguration

Alle Collections sind für Multi-Tenant konfiguriert:

// payload.config.ts
multiTenantPlugin({
  tenantsSlug: 'tenants',
  collections: {
    posts: {},
    testimonials: {},
    'newsletter-subscribers': {},
    faqs: {},
    team: {},
    services: {},
    timelines: {},
    workflows: {},
    // ... weitere Collections
  },
})

Tenant-Zuordnung

Jedes Dokument enthält ein tenant-Feld. Die Access-Control sorgt für Isolation:

  • Authentifizierte Admins: Sehen alle Dokumente
  • Anonyme Requests: Nur Dokumente des passenden Tenants

Tenant-IDs

ID Name Slug
1 porwoll.de porwoll
4 Complex Care Solutions GmbH c2s
5 Gunshin gunshin

Dateien-Übersicht

src/
├── collections/
│   ├── Posts.ts
│   ├── Categories.ts
│   ├── Testimonials.ts
│   ├── NewsletterSubscribers.ts
│   ├── FAQs.ts
│   ├── Team.ts
│   ├── Services.ts
│   ├── ServiceCategories.ts
│   ├── Timelines.ts
│   └── Workflows.ts
├── blocks/
│   ├── PostsListBlock.ts
│   ├── TestimonialsBlock.ts
│   ├── NewsletterBlock.ts
│   ├── ProcessStepsBlock.ts
│   ├── TimelineBlock.ts
│   ├── FAQBlock.ts
│   ├── TeamBlock.ts
│   ├── ServicesBlock.ts
│   └── index.ts
├── lib/
│   ├── tenantAccess.ts
│   └── email/
│       ├── newsletter-service.ts
│       └── newsletter-templates.ts
├── hooks/
│   └── sendNewsletterConfirmation.ts
└── app/(payload)/api/newsletter/
    ├── subscribe/route.ts
    ├── confirm/route.ts
    └── unsubscribe/route.ts

URLs

Production (für Frontends)

Resource URL
Posts API https://cms.c2sgmbh.de/api/posts
Testimonials API https://cms.c2sgmbh.de/api/testimonials
FAQs API https://cms.c2sgmbh.de/api/faqs
Team API https://cms.c2sgmbh.de/api/team
Services API https://cms.c2sgmbh.de/api/services
Timelines API https://cms.c2sgmbh.de/api/timelines
Workflows API https://cms.c2sgmbh.de/api/workflows
Newsletter Subscribe https://cms.c2sgmbh.de/api/newsletter/subscribe

Development

Resource URL
API Base https://pl.porwoll.tech/api
Admin Panel https://pl.porwoll.tech/admin

Changelog

Version 1.2 (18.12.2025)

  • Dokumentation auf Production-URLs aktualisiert
  • API-Endpoints für Frontend hinzugefügt
  • Newsletter Double Opt-In Flow dokumentiert
  • Timelines und Workflows Collections hinzugefügt
  • FAQ, Team, Services Blocks dokumentiert

Version 1.1 (14.12.2025)

  • Timelines Collection für chronologische Darstellungen
  • Workflows Collection für Prozesse
  • FAQs Collection mit Kategorisierung
  • Team Collection mit Social Links
  • Services Collection mit Kategorien

Version 1.0 (30.11.2025)

  • Posts Collection um type, isFeatured, excerpt erweitert
  • Testimonials Collection erstellt
  • NewsletterSubscribers Collection erstellt (DSGVO-konform)
  • 5 neue Blocks für Pages implementiert
  • Multi-Tenant Integration für alle Collections

Letzte Aktualisierung: 18. Dezember 2025