{"id":4604,"date":"2026-02-03T14:47:19","date_gmt":"2026-02-03T13:47:19","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=4604"},"modified":"2026-02-03T14:47:19","modified_gmt":"2026-02-03T13:47:19","slug":"payload-cms","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/ankuendigungen\/2026\/payload-cms\/","title":{"rendered":"Payload CMS"},"content":{"rendered":"<h2>1. Was ist Payload<\/h2>\n<p>Mit der zunehmenden Entkopplung von Inhaltsverwaltung und Inhaltspr\u00e4sentation haben sich Headless-CMS-Systeme als Standard f\u00fcr moderne Webarchitekturen etabliert. Payload CMS ist ein Node.js-basiertes Headless CMS, das einen konsequenten Code-First-Ansatz verfolgt. Im Gegensatz zu vielen Mitbewerbern, die auf eine grafische Konfiguration setzen, wird Payload vollst\u00e4ndig \u00fcber TypeScript-Definitionen gesteuert. Gegr\u00fcndet wurde Payload CMS im Jahr 2018 von Elliot DeNolf, James Mikrut und Dan Ribbens. Payload CMS 1.0 wurde im Sommer 2022 ver\u00f6ffentlicht. Im Juni 2025 wurde Payload CMS von Figma gekauft. Dieser Bericht erl\u00e4utert die technischen Kernaspekte und Features des Systems.<!-- notionvc: 722e2a9a-c113-4f68-9968-c36b51f25bd2 --><\/p>\n<h2>2. Der Code-First-Ansatz<\/h2>\n<p>Payload CMS verfolgt das Prinzip \u201eCode-First\u201c. Das bedeutet, dass die gesamte Struktur des CMS \u2013 von den Datenmodellen bis hin zu den Zugriffsberechtigungen \u2013 direkt im Quellcode definiert wird.<\/p>\n<p>Beispielsweise werden Collections in Form eines JavaScript-Objektes definiert, wobei die einzelnen Feldtypen, Labels und weitere optionale Parameter wie Access-Beschr\u00e4nkungen und Default-Werte definiert<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4609 size-large\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/code-first-941x1024.png\" alt=\"\" width=\"910\" height=\"990\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/code-first-941x1024.png 941w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/code-first-276x300.png 276w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/code-first-768x835.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/code-first.png 1300w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/p>\n<p><!-- notionvc: e1adcf0e-6065-4bcf-bc3c-0fdc2cf20b05 --><\/p>\n<p><!-- notionvc: 6305c28a-5fab-4375-b8cc-ca78d3067139 --><\/p>\n<h3>2.1 Schemas und Versionierung<\/h3>\n<p>Da die Schemas in TypeScript- oder JavaScript-Dateien definiert sind, k\u00f6nnen sie direkt im Git-Repository des Projekts versioniert werden. Dies bietet den Vorteil, dass \u00c4nderungen an der Datenstruktur synchron mit dem restlichen Anwendungscode entwickelt, getestet und ausgerollt werden k\u00f6nnen. Ein manuelles Nachpflegen von Feldern in einer Weboberfl\u00e4che nach einem Deployment entf\u00e4llt.<\/p>\n<h3>2.2 Validierungen und Hooks<\/h3>\n<p>Innerhalb der Schemas lassen sich komplexe Validierungslogiken hinterlegen. Neben einfachen Pflichtfeldern k\u00f6nnen mittels Funktionen (Custom Validations) beliebige Pr\u00fcfungen durchgef\u00fchrt werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4614\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/validierung-300x215.png\" alt=\"\" width=\"300\" height=\"215\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/validierung-300x215.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/validierung-1024x733.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/validierung-768x549.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/validierung.png 1300w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Zus\u00e4tzlich bietet Payload ein m\u00e4chtiges Hook-System. Diese &#8222;Hooks&#8220; erm\u00f6glichen es, in den Lebenszyklus von Datenoperationen einzugreifen:<\/p>\n<ul>\n<li><strong>Collection Hooks:<\/strong> <code>beforeChange<\/code>, <code>afterChange<\/code>, <code>beforeDelete<\/code>, etc.<\/li>\n<li><strong>Field Hooks:<\/strong> Diese beziehen sich auf einzelne Felder und erlauben beispielsweise die Transformation von Daten beim Lesen oder Schreiben.<\/li>\n<\/ul>\n<p><!-- notionvc: 00a59db1-077d-4f16-9c3a-d1110c324f38 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4615\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/hooks-300x263.png\" alt=\"\" width=\"300\" height=\"263\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/hooks-300x263.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/hooks-1024x898.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/hooks-768x673.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/hooks.png 1360w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>3. Datenmodellierung: Collections und Globals<!-- notionvc: a9f0a3e7-9cae-45b7-bcb1-9c6e1f60cd72 --><\/h2>\n<p>In Payload werden Inhalte in zwei Hauptkategorien unterteilt: Collections und Globals.<\/p>\n<ul>\n<li><strong>Collections:<\/strong> Diese dienen der Verwaltung von Listen gleichartiger Datenobjekte, wie zum Beispiel Blog-Artikel, Produkte oder Nutzerprofile. Jedes Dokument in einer Collection erh\u00e4lt eine eindeutige ID.<\/li>\n<li><strong>Globals:<\/strong> Diese sind f\u00fcr singul\u00e4re Daten gedacht, die nur einmal im System existieren. Typische Beispiele sind Konfigurationen f\u00fcr den Header einer Website, SEO-Metadaten oder allgemeine Einstellungen.<\/li>\n<\/ul>\n<p><!-- notionvc: 3c0a84b1-c782-4818-940d-ef6d7cfc5bd7 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4616\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/globals-und-collection-300x152.png\" alt=\"\" width=\"300\" height=\"152\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/globals-und-collection-300x152.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/globals-und-collection-1024x520.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/globals-und-collection-768x390.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/globals-und-collection.png 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>4. Fields und Field Types<!-- notionvc: e3c02b10-4b30-4029-b0f7-bc47d186e6ee --><\/h2>\n<p>Die Struktur von Collections und Globals wird durch Fields definiert. Payload bietet eine breite Palette an Feldtypen, die in verschiedene Kategorien unterteilt werden k\u00f6nnen:<\/p>\n<ul>\n<li><strong>Einfache Felder (Simple Fields):<\/strong> <code>Text<\/code>, <code>Number<\/code>, <code>Email<\/code>, <code>Date<\/code>, <code>Checkbox<\/code>.<\/li>\n<li><strong>Auswahlfelder:<\/strong> <code>Select<\/code> (Dropdown), <code>Radio Group<\/code>.<\/li>\n<li><strong>Beziehungsfelder:<\/strong> <code>Relationship<\/code> (Verkn\u00fcpfung zu anderen Collections), <code>Upload<\/code> (f\u00fcr Medien wie Bilder oder PDFs).<\/li>\n<li><strong>Layout- und Strukturfelder:<\/strong> * <code>Group<\/code>: Fasst Felder logisch zusammen.\n<ul>\n<li><code>Array<\/code>: Erlaubt wiederholbare Datens\u00e4tze innerhalb eines Dokuments.<\/li>\n<li><code>Blocks<\/code>: Erm\u00f6glicht das Erstellen flexibler Layouts, bei denen Redakteure aus vordefinierten Inhaltsbl\u00f6cken (z. B. Text-Bild-Block, Hero-Sektion, Zitat) w\u00e4hlen k\u00f6nnen.<\/li>\n<li><code>Tabs<\/code>: Dient der optischen Strukturierung im Admin-Panel.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- notionvc: acbc4258-ea23-4f06-b374-2c6b3c915674 --><\/p>\n<h2>5. Datenbankagnostik<!-- notionvc: 4d50b2d7-67e6-434f-b156-49169cc8a22f --><\/h2>\n<p>Ein zentrales technisches Merkmal von Payload ist die Datenbankagnostik. Das System ist nicht fest an einen Datenbanktyp gebunden, sondern nutzt Adapter, um mit verschiedenen Systemen zu kommunizieren. Aktuell werden prim\u00e4r zwei Ans\u00e4tze unterst\u00fctzt:<\/p>\n<ol>\n<li><strong>MongoDB:<\/strong> \u00dcber den Mongoose-Adapter (dokumentenorientiert).<\/li>\n<li><strong>Relational (SQL):<\/strong> \u00dcber den Drizzle-Adapter werden PostgreSQL und SQLite unterst\u00fctzt. Diese Flexibilit\u00e4t erlaubt es Entwicklern, die Datenbank passend zu den Projektanforderungen oder der vorhandenen Infrastruktur zu w\u00e4hlen<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4617\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/datenbankagnostik-300x73.png\" alt=\"\" width=\"300\" height=\"73\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/datenbankagnostik-300x73.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/datenbankagnostik-1024x250.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/datenbankagnostik-768x187.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/datenbankagnostik.png 1354w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>6. Schnittstellen: Local API, REST und GraphQL<!-- notionvc: 8522f93c-e0c1-4ee8-b5a3-da594bd53754 --><\/h2>\n<p>Payload stellt die Inhalte \u00fcber drei verschiedene Wege bereit, je nachdem, von wo aus auf die Daten zugegriffen werden soll.<\/p>\n<h3>6.1 Local API<\/h3>\n<p>Die Local API ist eine Besonderheit von Payload. Sie erm\u00f6glicht es, innerhalb desselben Node.js-Prozesses (z. B. in Next.js Server Components) auf die Daten zuzugreifen, ohne einen Umweg \u00fcber HTTP-Requests zu gehen. Dies ist hochperformant und umgeht Netzwerklatenzen sowie Authentifizierungsaufwand \u00fcber Header.<\/p>\n<h3>6.2 REST und GraphQL<\/h3>\n<p>F\u00fcr externe Anwendungen generiert Payload automatisch standardisierte Endpunkte:<\/p>\n<ul>\n<li><strong>REST API:<\/strong> Bietet klassische Endpunkte wie <code>\/api\/posts<\/code>, inklusive umfangreicher Query-Parameter zum Filtern und Sortieren.<\/li>\n<li><strong>GraphQL API:<\/strong> Payload erstellt automatisch ein vollst\u00e4ndiges, typisiertes GraphQL-Schema. Dies ist besonders vorteilhaft f\u00fcr Frontends, die nur spezifische Teildaten abfragen m\u00f6chten (Overfetching-Vermeidung).<\/li>\n<\/ul>\n<h2>7. Access Control (Zugriffskontrolle)<\/h2>\n<p>Sicherheit wird in Payload auf Code-Ebene definiert. Die Zugriffskontrolle ist granular und kann auf Collection-Ebene oder sogar auf Feldebene festgelegt werden. Dabei k\u00f6nnen Funktionen geschrieben werden, die den Zugriff basierend auf dem eingeloggten Nutzer oder dem Inhalt des Dokuments erlauben oder verweigern. Ein Beispiel w\u00e4re, dass &#8222;Autoren&#8220; nur ihre eigenen Beitr\u00e4ge bearbeiten d\u00fcrfen, w\u00e4hrend &#8222;Admins&#8220; vollen Zugriff haben.<\/p>\n<h2>8. Erweiterbarkeit (Extensibility)<\/h2>\n<p>Payload ist darauf ausgelegt, \u00fcber den Standardfunktionsumfang hinaus erweitert zu werden:<\/p>\n<ul>\n<li><strong>Admin UI:<\/strong> Da das Admin-Panel auf React basiert, k\u00f6nnen eigene Komponenten (Custom Components) eingebunden werden, um die Redaktionsoberfl\u00e4che anzupassen.<\/li>\n<li><strong>Eigene Endpunkte:<\/strong> Es k\u00f6nnen zus\u00e4tzliche Express- oder Next.js-Routen definiert werden, um spezialisierte Logik abzubilden.<\/li>\n<li><strong>Plugins:<\/strong> Wiederkehrende Funktionalit\u00e4ten (z. B. eine Cloudinary-Anbindung oder SEO-Tools) k\u00f6nnen in Plugins gekapselt und einfach in verschiedene Projekte integriert werden.<\/li>\n<\/ul>\n<h2>9. BPMN-Diagramm<!-- notionvc: d1f7db51-b277-4b45-b701-7550294135dd --><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4620\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/bpmn-1-300x115.png\" alt=\"\" width=\"300\" height=\"115\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/bpmn-1-300x115.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/bpmn-1-1024x392.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/bpmn-1-768x294.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2026\/01\/bpmn-1.png 1384w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>10. Fazit<!-- notionvc: 6e74ae6c-bcac-4997-a49f-fb877dbce87e --><\/h2>\n<p>Payload CMS bietet durch seinen Code-First-Ansatz und die tiefe Integration von TypeScript eine hohe Entwicklungsqualit\u00e4t und Wartbarkeit. Die Kombination aus Datenbankflexibilit\u00e4t, granularem Rechtemanagement und vielf\u00e4ltigen Schnittstellen (insbesondere der Local API) macht es zu einem leistungsf\u00e4higen Werkzeug f\u00fcr komplexe, individuelle Webprojekte. W\u00e4hrend der Verzicht auf eine reine No-Code-Konfiguration die Einstiegsh\u00fcrde f\u00fcr Nicht-Entwickler erh\u00f6ht, \u00fcberwiegen f\u00fcr professionelle Entwicklungsteams die Vorteile der vollen Kontrolle \u00fcber den Code und die Datenstruktur.<!-- notionvc: ffef4725-dd89-4776-8fe4-ab02997114d4 --><\/p>\n<h2><strong>Quellen:<\/strong><\/h2>\n<ul>\n<li>Da\u00dfler, D., Schmitt, M., Lemh\u00f6fer, R. (2025). Pr\u00e4sentationsunterlagen zu Payload CMS.<\/li>\n<li>Payload CMS Documentation. <a href=\"https:\/\/payloadcms.com\/docs\">https:\/\/payloadcms.com\/docs<\/a> (Abgerufen am 20.01.2026).<\/li>\n<\/ul>\n<p><!-- notionvc: 824aefaf-1422-4858-a11c-438ab22ec6e9 --><\/p>\n<p><!-- notionvc: b3799044-02b0-46b5-aca9-3634a6161236 --><\/p>\n<p><!-- notionvc: 07ea877a-a4d6-4fad-a379-9438f372de8d --><\/p>\n<p><!-- notionvc: f2c7d870-5d27-4589-a6c2-43cb30a4bdd8 --><\/p>\n<p><!-- notionvc: be1a307f-626d-485a-a9a6-29cd0fb7b08d --><\/p>\n<p><!-- notionvc: 66c695b0-6f88-426b-a21c-51ad04b28490 --><\/p>\n<p><!-- notionvc: 75b5c951-0c68-4344-a88a-42a26448aaac --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Was ist Payload Mit der zunehmenden Entkopplung von Inhaltsverwaltung und Inhaltspr\u00e4sentation haben sich Headless-CMS-Systeme als Standard f\u00fcr moderne Webarchitekturen<\/p>\n","protected":false},"author":241,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4604","post","type-post","status-publish","format-standard","hentry","category-ankuendigungen"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/241"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=4604"}],"version-history":[{"count":12,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4604\/revisions"}],"predecessor-version":[{"id":4624,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4604\/revisions\/4624"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=4604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=4604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=4604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}