mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-17 19:44:12 +00:00
Tests: - Update frontend.e2e.spec.ts with locale testing - Add search.e2e.spec.ts for search functionality - Add i18n.int.spec.ts for localization tests - Add search.int.spec.ts for search integration - Update playwright.config.ts Documentation: - Add CLAUDE.md with project instructions - Add docs/ directory with detailed documentation - Add scripts/ for utility scripts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Phase 1: Payload CMS Collections für porwoll.de
Kontext
Du arbeitest im Verzeichnis /home/payload/payload-cms. Dies ist ein Payload CMS 3.x Projekt mit Multi-Tenant-Support. Der Tenant "porwoll" (ID: 1) existiert bereits.
Lies zuerst die CLAUDE.md für Projektkontext.
Aufgabe
Erstelle die Collections und Globals für die Website porwoll.de. Die Website ist eine persönliche/berufliche Präsenz mit Blog.
Zu erstellende Dateien
1. Collection: Pages (src/collections/Pages.ts)
Für statische Seiten wie Startseite, Mensch, Leben, etc.
Felder:
- title: text, required
- slug: text, required, unique
- hero: group
- image: upload (Media)
- headline: text
- subline: textarea
- content: richText (Lexical)
- seo: group
- metaTitle: text
- metaDescription: textarea
- ogImage: upload (Media)
- status: select (draft, published), default: draft
- publishedAt: date
Admin:
- useAsTitle: 'title'
- defaultColumns: ['title', 'slug', 'status', 'updatedAt']
2. Collection: Posts (src/collections/Posts.ts)
Für Blog-Artikel.
Felder:
- title: text, required
- slug: text, required, unique
- excerpt: textarea, maxLength 300
- content: richText (Lexical)
- featuredImage: upload (Media)
- category: relationship → Categories
- author: relationship → Users
- publishedAt: date
- status: select (draft, published), default: draft
Admin:
- useAsTitle: 'title'
- defaultColumns: ['title', 'category', 'status', 'publishedAt']
3. Collection: Categories (src/collections/Categories.ts)
Blog-Kategorien.
Felder:
- name: text, required
- slug: text, required, unique
- description: textarea
Admin:
- useAsTitle: 'name'
4. Collection: SocialLinks (src/collections/SocialLinks.ts)
Social Media Verlinkungen.
Felder:
- platform: select (facebook, x, instagram, youtube, linkedin, xing), required
- url: text, required
- isActive: checkbox, default: true
Admin:
- useAsTitle: 'platform'
5. Global: SiteSettings (src/globals/SiteSettings.ts)
Globale Website-Einstellungen.
Felder:
- siteName: text, default: 'porwoll.de'
- siteTagline: text
- logo: upload (Media)
- favicon: upload (Media)
- contact: group
- email: email
- phone: text
- address: textarea
- footer: group
- copyrightText: text
- showSocialLinks: checkbox, default: true
- seo: group
- defaultMetaTitle: text
- defaultMetaDescription: textarea
- defaultOgImage: upload (Media)
6. Global: Navigation (src/globals/Navigation.ts)
Hauptnavigation der Website.
Felder:
- mainMenu: array
- label: text, required
- type: select (page, custom, submenu)
- page: relationship → Pages (wenn type = page)
- url: text (wenn type = custom)
- openInNewTab: checkbox
- submenu: array (wenn type = submenu)
- label: text
- page: relationship → Pages
- url: text
- footerMenu: array
- label: text
- page: relationship → Pages
- url: text
Umsetzungsschritte
- Erstelle den Ordner
src/globals/falls nicht vorhanden - Erstelle alle Collection-Dateien in
src/collections/ - Erstelle alle Global-Dateien in
src/globals/ - Aktualisiere
src/payload.config.ts:- Importiere alle neuen Collections
- Füge sie zum
collectionsArray hinzu - Importiere alle Globals
- Füge
globals: [SiteSettings, Navigation]hinzu
- Führe aus:
pnpm payload generate:types - Führe aus:
pnpm payload migrate:create - Führe aus:
pnpm payload migrate - Führe aus:
pnpm build - Starte neu:
pm2 restart payload
Wichtige Hinweise
- Alle Collections müssen Multi-Tenant-fähig sein (werden automatisch durch das Plugin gefiltert)
- Verwende den Lexical Editor für Rich Text:
import { lexicalEditor } from '@payloadcms/richtext-lexical' - Prüfe nach jedem Schritt auf TypeScript-Fehler
- Die Media Collection existiert bereits - nutze sie für alle Uploads
- Halte dich an Payload 3.x Syntax (nicht 2.x)
Erfolgskriterien
Nach Abschluss sollten im Admin Panel unter https://pl.c2sgmbh.de/admin folgende Einträge sichtbar sein:
Collections:
- Users (existiert)
- Media (existiert)
- Tenants (existiert)
- Pages (neu)
- Posts (neu)
- Categories (neu)
- SocialLinks (neu)
Globals:
- Site Settings (neu)
- Navigation (neu)
Bei Fehlern
- Lies die Fehlermeldung genau
- Prüfe die Payload 3.x Dokumentation
- Stelle sicher, dass alle Imports korrekt sind
- Prüfe TypeScript-Kompatibilität mit
pnpm tsc --noEmit