Rückblick auf 14 kopflose cm 2019

Vor einiger Zeit stellte sich in einer bekannten Aktiengesellschaft auf dem russischen Markt, in der ich tätig war, die Frage nach der Verwendung von kopflosen CMS. Unter den vielen Implementierungen musste eine ausgewählt werden. Dies ist eine Geschichte darüber, wie ich Auswahlkriterien gebildet habe, wie ich cms analysiert habe und wie diese Analyse mich zu dem Gedanken gebracht hat, dass ich meine eigenen schreiben muss. Übersicht über 14 kopflose cm unter dem Schnitt.



Was ist ein kopfloses CMS?


Obwohl der Begriff nicht neu ist, wird dieses Thema aus irgendeinem Grund im russischsprachigen Internet nur sehr wenig behandelt. Also laut Wikipedia :
Ein Headless Content Management System oder Headless CMS ist ein Back-End-Content-Management-System (CMS), das von Grund auf als Content-Repository erstellt wurde und den Zugriff auf Inhalte über eine RESTful-API für die Anzeige auf jedem Gerät ermöglicht.
Das Headless Content Management System oder Headless CMS ist ein serverbasiertes Content Management System (CMS), das zunächst ein Repository für Inhalte ist und über die RESTful-API Zugriff auf Inhalte zur Anzeige auf jedem Gerät bietet.

Mit anderen Worten, kopfloses cms ist ein Konzept, eine Art spezieller Typ von cms-ok, nach dem cms nur für die Verwaltung von „reinem“ Inhalt verantwortlich ist. Auf diese Weise können Sie die Datenschicht, die in cm verwaltet wird, von der Anzeigeebene trennen, die von der Clientanwendung gesteuert wird. Inhalte werden in einem universellen Format, normalerweise in JSON, verteilt. Auf diese Weise können eine Website, eine mobile Anwendung und alle mit dem Internet verbundenen Geräte gleichzeitig verwaltet werden.

Weitere Informationen zu den Vor- und Nachteilen eines solchen Konzepts finden Sie in diesem oder diesem Artikel oder erneut in einem Wikipedia-Artikel .

Eintauchen in den Kontext


Um die Suchkriterien zu bestimmen und zu verstehen, welches kopflose CMS besser ist als andere, musste ich die Frage beantworten: Was ist das Beste? Welche spezifischen Aufgaben sollte es lösen und wie?

Um meinen aktuellen Gedankengang zu demonstrieren, habe ich mir ein typisches Problem ausgedacht und es mit einem der kopflosen CMS gelöst. Und obwohl in Wirklichkeit alles etwas anders war, ist dieses Format der Erzählung prägnanter und spiegelt die Essenz wider und enthüllt das Thema kopfloser CMS besser.

Stellen wir uns also vor, dass eine Aufgabe zur Entwicklung kommt. Die Site muss einen neuen Abschnitt implementieren, in dem Benutzer Rezensionen zu Filmen lesen.
Die Bedingungen sind wie folgt:
  • Im Moment müssen Sie nur den Namen des Films, das Poster, den Namen des Regisseurs und den Text der Rezension anzeigen. In Zukunft wird die Struktur jedoch komplizierter, und es werden Informationen zu Gebühren, Schauspielern usw. angezeigt.
  • Eine Person ohne technischen Hintergrund, ein Content Manager, muss Bewertungen hinzufügen und ändern, und dafür sollte keine Entwicklungsressource beteiligt sein.
  • Diese Funktionalität sollte deaktiviert sein, d.h. müssen Feature-Toggle implementieren;
  • Vor dem Veröffentlichen von Inhalten sollte der Inhaltsmanager in einer Testumgebung sehen können, wie Änderungen aussehen.

Dies sind die Anforderungen, die von einem internen Kunden gestellt wurden. Die Entwicklungsseite hat ihre eigene technische Vision für die Implementierung, nämlich:
  • der Kunde sollte nicht in der Lage sein, sein Knie zu schießen, d.h. Der Content Manager sollte nichts kaputt machen, auch wenn er will. Es sollte nur das bearbeiten, was die Entwickler sich vorgestellt haben.
  • sollte in der Lage sein, Versionen zu verwalten und ein Rollback durchzuführen, wenn etwas passiert;
  • Es ist nicht bekannt, welche zusätzlichen Funktionen in Zukunft verfügbar sein werden. Dies bedeutet, dass das Komplizieren oder Ändern eines Abschnitts einfach sein sollte.
  • Auf der Sicherheitsseite: Das System sollte sich auf unserem Server befinden und nicht in einer fremden Cloud, d. h. sollte in der Lage sein, vor Ort bereitzustellen.

Nun, die Aufgabe ist klar. Ich gehe zur Entscheidung über.

Ich werde jedes JSON-CMS verwenden , dies ist eines der kopflosen CMS . Ich stelle fest, dass es im Moment nicht alle oben beschriebenen Anforderungen erfüllt. Beispielsweise kann der Content Manager in einer Testumgebung nicht sehen, wie Änderungen aussehen. Alle Vor- und Nachteile werden jedoch später sichtbar. Jetzt versuche ich, ein typisches Szenario für die Arbeit mit kopflosen CMS zu „fühlen“.

Als erstes müssen die Modelle beschrieben werden. Das Modell beantwortet die Frage, wie die Inhaltsentität aussehen soll. Wie ist ihre Struktur? Im Wesentlichen ist dies ein Protokoll der Interaktion zwischen cms und einer Clientanwendung. In unserem Fall - eine Rezension des Films - enthält das Objekt:
  • 3 obligatorische Eigenschaften: Filmtitel, Filmplakat, Rezensionstext;
  • 1 optionale Eigenschaft: Objekt "Director", das wiederum 2 erforderliche Eigenschaften Name und Nachname enthält.

In der JSON-Schemaansicht sieht das Modell folgendermaßen aus:
{ type: 'object', required: ['movieName', 'moviePoster', 'reviewText'], additionalProperties: false, properties: { movieName: { type: 'string', minLength: 1, maxLength: 300, }, moviePoster: { type: 'string', description: 'URL to file', }, movieProducer: { type: 'object', required: ['name', 'surname'], additionalProperties: false, properties: { name: { type: 'string', maxLength: 100, minLength: 1 }, surname: { type: 'string', maxLength: 100, minLength: 1 }, }, }, reviewText: { type: 'string', minLength: 1, maxLength: 3000, }, }, } 

Sie müssen auch Feature Toggle implementieren. Ein Modell in Form eines JSON-Schemas sieht folgendermaßen aus:
 { type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, } 

Wenn Sie wissen, wie Modelle aussehen sollen, können Sie sie in einem beliebigen JSON-CMS erstellen.



Ich erstelle sofort Inhaltsentitäten, d. H. der Inhalt selbst, basierend auf Modellen. Eine Dummy-Überprüfung und Feature-Toggle-Entität.



Um die Clientanwendung in cms zu integrieren, ist ein API-Schlüssel erforderlich. Ich generiere es im entsprechenden Abschnitt cms.


Jetzt ist alles bereit für die Implementierung von Funktionen in der Client-Anwendung und die Integration in cms. Die Client-Anwendung kann alles sein - eine Website oder eine mobile Anwendung oder beides, die auf irgendetwas geschrieben ist. Als Beispiel implementiere ich Funktionen auf der SPA-Site in React. Tatsächlich nehmen wir die Daten mit der bereits bekannten festen Struktur von cms und zeigen sie so an, wie wir es wollen.
 import React, { Component } from 'react' import { Accordion, AccordionItem, AccordionItemTitle, AccordionItemBody, } from 'react-accessible-accordion' import 'react-accessible-accordion/dist/fancy-example.css' const apiUrl = 'https://api.anyjsoncms.com' // ApiKey      const apiKey = '87414950dfd15648ea560bd89dd0ee02bfc8fcca' class App extends Component { constructor(props) { super(props) this.state = { movies: null, isFeatureActive: null, loading: true, } } componentDidMount() { const options = { method: 'GET', headers: { ApiKey: apiKey } } Promise.all([ fetch(`${apiUrl}/entries?apiId=featureToggle`, options).then(resp => resp.json() ), fetch(`${apiUrl}/entries?apiId=movieReview`, options).then(resp => resp.json() ), ]) .then(([featureToggleResp, movieReviewResp]) => { const featureToggle = featureToggleResp.find( item => item.value.name === 'movieReviewFeatureToggle' ) const isFeatureActive = featureToggle && featureToggle.value && featureToggle.value.isFeatureActive const movies = movieReviewResp.map(item => item.value) this.setState({ movies, isFeatureActive, loading: false }) }) .catch(error => { console.error(error) }) } render() { const { movies, isFeatureActive, loading } = this.state if (loading) return <div>Loading...</div> if (!isFeatureActive) return <div style={{ display: 'none' }}>Section is hidden</div> return ( <div> <Accordion> {movies.map( ({ movieName, moviePoster, movieProducer, reviewText }, index) => ( <AccordionItem key={index}> <AccordionItemTitle> <h3>{movieName}</h3> </AccordionItemTitle> <AccordionItemBody> <img src={`${apiUrl}${moviePoster}`} alt="" /> {!movieProducer ? null : ( <div>{`${movieProducer.name} ${ movieProducer.surname }`}</div> )} <div>{reviewText}</div> </AccordionItemBody> </AccordionItem> ) )} </Accordion> </div> ) } } export default App 

Das ist alles. Jetzt kann der Content Manager problemlos Bewertungen verwalten, und es besteht auch die Möglichkeit, Funktionen mithilfe der Funktionsumschaltung zu aktivieren und zu deaktivieren.

Das Anzeigen von Rezensionen für Filme ist ein einfaches Beispiel. Ich habe es bewusst zitiert, um nicht im Detail zu ertrinken, sondern nur um das Prinzip zu demonstrieren. In der Realität können Merkmale um eine Größenordnung komplizierter sein. Dies können Schnittstellenelemente, Produktkataloge, komplexe Widgets, Zielseiten, Formulargeneratoren, Posts usw. sein. In diesem Beispiel verbreitet cms nur Informationen, aber die meisten kopflosen cms bieten CRUD-APIs, mit denen beispielsweise Formulare verarbeitet werden können Manipulieren Sie im Allgemeinen Entitäten, was auch immer. Im Allgemeinen besteht die Idee von kopflosen cms gerade darin, Freiheit und Bequemlichkeit bei der Implementierung eines willkürlich komplexen Protokolls zu bieten, um die Kontrolle auf cms von irgendetwas und nach Bedarf zu übertragen.

Auswahlkriterien und Analyse kopflos cms


Nachdem ich verstanden hatte, welche Aufgaben mit kopflosen CMS wie gelöst werden würden, wählte ich die Kriterien aus und begann, die Systeme zu untersuchen. Laut headlesscms.org gibt es derzeit 54 cm. Alle zu analysieren ist ein ziemlich zeitaufwändiger Prozess, daher habe ich die 14 beliebtesten, bemerkenswertesten und am meisten diskutierten Systeme hervorgehoben: Alle JSON-CMS, Contentful, Strapi, GraphCMS, Squidex, Butter-CMS, Cloud-CMS, pitockpit, Cosmic JS, Directus, Kentico Cloud, Netlify CMS , Prismisch, Geist.

Die Ergebnisse lassen sich bequemer in Form einer Tabelle untersuchen . Aber hier duplizieren.

Beliebiges JSON-CMS


Websiteanyjsoncms.com
BeschreibungHeadless CMS, das bei der Verwaltung und Bereitstellung von JSON für jede App helfen kann
ZielgruppeDigitale Teams
Preis pro Monatvor Ort - kostenlos
Kommerzielle Support-Gelegenheitja
Follower auf Twitter0 Tausend
Github-Stars (falls Open Source)0 Tausend
Open Source Lösungja
Lokale Softwareja
Cloud-ServiceNein
GraphQL APINein
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Nein
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).ja
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)ja
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenNein
CRUD API für ModelleNein
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-ZugriffstokenNein
Veröffentlichungssystem: Entwurf / VeröffentlichungNein
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenNein
Festschreiben von Content Entity-VersionenNein
Git-ähnliches VersionierungssystemNein
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
WebhooksNein
BenutzerverwaltungNein
BenutzerzugriffskontrolleNein

Zufrieden


Websitecontentful.com
BeschreibungEinmal aktualisieren und überall veröffentlichen, damit Teams digitale Produkte schneller erstellen können.
ZielContent Management in der Multi-Channel-Welt
ZielgruppeDigitale Teams, Unternehmen
Preis pro MonatCloud-frei, 39 US-Dollar, 879 US-Dollar, versteckter Preis für Unternehmen
Kommerzielle Support-Gelegenheitja
Follower auf Twitter33,6 Tausend
Github-Stars (falls Open Source)nicht Open Source
Open Source LösungNein
Lokale SoftwareNein
Cloud-Serviceja
GraphQL APIja
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).ja
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).Nein
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für Modelleja
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-Zugriffstokenja
Veröffentlichungssystem: Entwurf / Veröffentlichungja
Möglichkeit einer verspäteten VeröffentlichungNein
Modellversionen reparierenja
Festschreiben von Content Entity-Versionenja
Git-ähnliches VersionierungssystemNein
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
Benutzerzugriffskontrolleja

Strapi


Websitestrapi.io
BeschreibungVerwalten Sie Ihre Inhalte. Verteilen Sie es überall.
ZielErstellen Sie ohne Aufwand eine leistungsstarke Inhalts-API
ZielgruppeProfessionelle Entwickler
Preis pro Monatvor Ort - kostenlos
Kommerzielle Support-Gelegenheitja
Follower auf Twitter2,3 Tausend
Github-Stars (falls Open Source)11,1 Tausend
Open Source Lösungja
Lokale Softwareja
Cloud-ServiceNein
GraphQL APIja
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Nein
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).Nein
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für ModelleNein
API-Support-ZugriffstokenNein
Differenzierung der Rechte für den Zugriff auf die API nach API-Zugriffstokenja
Veröffentlichungssystem: Entwurf / VeröffentlichungNein
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenNein
Festschreiben von Content Entity-VersionenNein
Git-ähnliches VersionierungssystemNein
ProjektmanagementNein, aber Sie können eine separate Instanz von cms bereitstellen
Bildverwaltungja
Dateiverwaltungja
WebhooksNein, kann aber über Lebenszyklus-Rückrufe implementiert werden
Benutzerverwaltungja
Benutzerzugriffskontrolleja
Weitere InformationenIch habe die Alpha-Version studiert, es gab Fehler beim Speichern des Modells

GraphCMS


Websitegraphcms.com
BeschreibungBringen Sie Inhalte auf jede Plattform
ZielInhaltsinfrastruktur für Ihr digitales Produkt
ZielgruppeProfessionelle Entwickler, Agenturen, Unternehmen
Preis pro MonatCloud-frei, 49 $, 149 $, 499 $, versteckter Preis für Unternehmen
Kommerzielle Support-Gelegenheitja
Follower auf Twitter2,4 Tausend
Github-Stars (falls Open Source)nicht Open Source
Open Source LösungNein
Lokale SoftwareNein
Cloud-Serviceja
GraphQL APIja
REST-APINein
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Nein
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).Nein
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Ja, entweder kann das Modell nicht geändert werden, oder die Änderung führt nach Bestätigung zu Datenverlust
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für ModelleNein
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-Zugriffstokenja
Veröffentlichungssystem: Entwurf / Veröffentlichungja
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenNein
Festschreiben von Content Entity-VersionenNein
Git-ähnliches VersionierungssystemNein
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
Benutzerzugriffskontrolleja

Squidex


Websitesquidex.io
BeschreibungMit Squidex können Sie Inhalte an einem zentralen Ort verwalten und Ihren Tech-Stack für Apps, Websites und Dienste verwenden.
ZielUnsere erste Priorität ist es, einen hochmodernen, stabilen, schnellen und kostenlosen Content-Management-Hub bereitzustellen, um Entwicklern das Leben ein wenig zu erleichtern.
ZielgruppeProfessionelle Entwickler
Preis pro Monatwolkenfrei, $ 19, $ 49, $ 99; vor Ort - kostenlos
Kommerzielle Support-Gelegenheitnicht angekündigt
Follower auf Twitter0 Tausend
Github-Stars (falls Open Source)0,5 Tausend
Open Source Lösungja
Lokale Softwareja
Cloud-Serviceja
GraphQL APIja
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Nein
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).Nein
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenSie können einen einzelnen Inhalt oder mehrere Inhalte angeben, eine bestimmte Anzahl kann nicht angegeben werden
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für ModelleNein
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-Zugriffstokenja
Veröffentlichungssystem: Entwurf / Veröffentlichungja
Verzögerte Veröffentlichungsfähigkeitja
Modellversionen reparierenNein
Festschreiben von Content Entity-Versionenja
Git-ähnliches VersionierungssystemNein
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
Benutzerzugriffskontrolleja

Butter cms


Websitebuttercms.com
BeschreibungFügen Sie Ihrer Website in wenigen Minuten ein Blog oder CMS hinzu. Besuchen Sie unser Headless CMS und kehren Sie zu interessanteren Problemen zurück.
ZielLegen Sie unser API-basiertes CMS in wenigen Minuten in einem beliebigen Tech-Stack ab.
ZielgruppeStartups, Agenturen, Unternehmen
Preis pro MonatCloud - 24 $, 83 $, 166 $, versteckter Preis für Unternehmen
Kommerzielle Support-Gelegenheitja
Follower auf Twitter0,4 Tausend
Github-Stars (falls Open Source)nicht Open Source
Open Source LösungNein
Lokale SoftwareNein
Cloud-Serviceja
GraphQL APINein
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Nein
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).Nein
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenNein
CRUD API für ModelleNein
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-Zugriffstokennein (und nicht erforderlich, da nur gelesen wird)
Veröffentlichungssystem: Entwurf / Veröffentlichungja
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenNein
Festschreiben von Content Entity-Versionenja
Git-ähnliches VersionierungssystemNein
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
Benutzerzugriffskontrolleja

Wolke cms


Websitecloudcms.com
BeschreibungEinfach für Inhaltseditoren + Leistungsstark für Entwickler
ZielCMS für geschäftskritische Anwendungen
ZielgruppeUnternehmen
Preis pro Monat200 $, 800 $, 1.200 $
Kommerzielle Support-Gelegenheitja
Follower auf Twitter0,3 Tausend
Github-Stars (falls Open Source)nicht Open Source
Open Source LösungNein
Lokale Softwareja
Cloud-Serviceja
GraphQL APIja
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).ja
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).ja
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Nein
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für Modelleja
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-ZugriffstokenNein
Veröffentlichungssystem: Entwurf / VeröffentlichungJa, Sie können es in den Einstellungen aktivieren
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenja
Festschreiben von Content Entity-Versionenja
Git-ähnliches Versionierungssystemja
Projektmanagementja
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
Benutzerzugriffskontrolleja
Weitere InformationenSehr mächtig, es gibt alle Chips Level Unternehmer und noch mehr. Aufgrund der Fülle an Funktionen benötigen Sie etwas mehr Zeit, um sie zu verstehen.

Pitockpit


Websitegetcockpit.com
BeschreibungEinfache Inhaltsplattform zum Verwalten strukturierter Inhalte
ZielFügen Sie jeder Site Content-Management-Funktionen hinzu - Plug & Play / Headless / API-First CMS
ZielgruppeDigitale Teams
Preis pro Monatvor Ort - kostenlos
Kommerzielle Support-Gelegenheitja
Follower auf Twitter0,7 Tausend
Github-Stars (falls Open Source)3,5 Tausend
Open Source Lösungja
Lokale Softwareja
Cloud-ServiceNein
GraphQL APINein, aber implementiert durch die Installation eines Addons
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.ja
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
Es ist möglich, Verknüpfungen zu kombinieren (z. B. kann ein Modell eine Verknüpfung zu einem von zwei Modellen herstellen).Ja, mit dem Repeater-Typ
Es ist möglich, verschachtelte Modelle zu erstellen (z. B. enthält ein Objekt ein anderes Objekt).ja
Es ist möglich, Modelle zu kombinieren (z. B. kann ein Feld entweder eine Zeichenfolge oder eine Zahl sein).Ja, mit dem Repeater-Typ
Es kann angegeben werden, wie viele Inhaltsentitäten basierend auf einem bestimmten Modell erstellt werden könnenNein, es können nur Singleton-Modelle erstellt werden
Verwalten erkannter Konflikte zwischen dem Modell und der Inhaltsentität (Wenn Sie beispielsweise das Modell so ändern, dass die vorhandene Inhaltsentität diese Änderungen nicht erfüllt, kann das System solche Situationen lösen?)Nein
API für Inhaltsentitäten lesenja
API für Inhaltsentitäten erstellen, aktualisieren, löschenja
CRUD API für ModelleNur lesen und aktualisieren
API-Support-Zugriffstokenja
Differenzierung der Rechte für den Zugriff auf die API nach API-ZugriffstokenJa, über die Einstellungen für Sammlungsberechtigungen
Veröffentlichungssystem: Entwurf / VeröffentlichungNein
Verzögerte VeröffentlichungsfähigkeitNein
Modellversionen reparierenNein
Festschreiben von Content Entity-Versionenja
Git-ähnliches VersionierungssystemNein
ProjektmanagementNein, aber Sie können eine separate Instanz von cms bereitstellen
Bildverwaltungja
Dateiverwaltungja
Webhooksja
Benutzerverwaltungja
BenutzerzugriffskontrolleJa, durch Gruppenkonfiguration
Weitere InformationenEine anständige Open Source Lösung. Einige Einstellungen werden über die Konfiguration und nicht über die Schnittstelle konfiguriert. Um beispielsweise den Repeater-Typ zu konfigurieren, müssen Sie die Dokumentation studieren und Optionen über JSON schreiben. Es ist in PHP geschrieben.

Kosmische js


Websitecosmicjs.com
BeschreibungModerne Content Management Lösung. Das führende CMS für moderne digitale Teams.
ZielDas Cosmic JS Headless CMS bietet Ihrem Team alles, was Sie für die Erledigung Ihrer Aufgaben benötigen.
ZielgruppeDigitale Teams, Unternehmenspreis
Preis pro Monat$ 44, $ 179, $ 449, $ 359, $ 719
Kommerzielle Support-Gelegenheitja
Follower auf Twitter2,8 Tausend
Github-Stars (falls Open Source)nicht Open Source
Open Source LösungNein
Lokale Softwareja
Cloud-Serviceja
GraphQL APIja
REST-APIja
Die Inhaltsentität wird basierend auf dem Modell erstellt.Ja, aber der Ersteller des Inhalts kann beliebige Felder hinzufügen, auch wenn diese nicht im Modell enthalten sind. Das heißt, Korrespondenzmodell -> Inhalt ist nicht streng.
Es ist möglich, eigene Modelle zu erstellenja
Über die Benutzeroberfläche können Sie eigene Modelle erstellenja
Ein Modell kann einen Link zu einem anderen Modell enthalten.ja
( ), :
  • Object
  • Object Object Type

( )ja
( , )Nein
Nein
(, , , ?)Nein
Read APIja
Ceate, update, delete APIja
CRUD APIja
API access tokensja
API API access token, read write
: Draft/Publishja
ja
Nein
ja
GitNein
ja
ja
ja
Webhooksja
ja
ja

Directus


Websitedirectus.io
BeschreibungPremium Open-Source Software For Any Data-Driven Project
Directus is an open-source suite of software that provides an instant API wrapper for SQL databases and an intuitive Admin App for non-technical users to manage that content.
Digital teams, enterprice
on-premises — free
ja
twitter19,4
Github stars ( open source)3,8
Open sourceja
On-premises softwareja
Cloud service, -
GraphQL APINein
REST APIja
ja
ja
UIja
ja
( )Nein
( ), group,
( , )Nein
, singleton
(, , , ?)Nein
Read APIja
Ceate, update, delete APIja
CRUD APIja
API access tokens, , ,
API API access token,
: Draft/PublishNein
Nein
Nein
ja
GitNein
, cms
ja
ja
Webhooks, , php
ja
ja
Weitere Informationen«Something is wrong with this instance's server or database.» . . 10 . — 5 . , , . . - . , Directus Stable, .. .

Kentico Cloud


Websitekenticocloud.com
BeschreibungStop Your Content Friction. Collaborate and deliver engaging omnichannel experiences with a CMS that's built for content strategists and developers.
Create engaging personalized experiences across any device with a next-generation headless CMS.
Digital teams, agencies, enterprice
cloud — 0$, 299$, 999$, hidden price for enterprise
ja
twitter1
Github stars ( open source)open source
Open sourceNein
On-premises softwareNein
Cloud serviceja
GraphQL APINein
REST APIja
ja
ja
UIja
ja
( )ja
( ), Content Type Snippets, , snippet snippet
( , )Nein
Nein
(, , , ?)Nein
Read APIja
Ceate, update, delete API, professional
CRUD API, beta , professional
API access tokens, professional
API API access token, API token ,
: Draft/Publishja
ja
Nein
ja
GitNein
ja
ja
ja
Webhooksja
ja
ja
Weitere Informationen, contentfull. .

Netlify CMS


Websitenetlifycms.org
BeschreibungOpen source content management for your Git workflow. Use Netlify CMS with any static site
generator for a faster and more flexible web project
Get the speed, security, and scalability of a static site, while still providing a convenient editing interface for content.
Profesional developers
on-premises — free
twitter3,6
Github stars ( open source)7,4
Open sourceja
On-premises softwareja
Cloud serviceNein
GraphQL APINein
REST API, git
ja
ja
UI, yml
ja
( )Nein
( ), object ,
( , )Nein
Nein
(, , , ?)Nein
Read APINein
Ceate, update, delete APINein
CRUD APINein
API access tokensNein
API API access tokenNein
: Draft/Publish, editorial_workflow on, GitHub
Nein
ja
ja
Gitja
, cms
, , ,
, , ,
WebhooksNein
, cms , git ( bitbucket, github, gitlab .)
, git
Weitere Informationen— 2.5.1. CMS — . , git .

Prismic


Websiteprismic.io
BeschreibungOne CMS Backend for all your Websites & Apps
CMS for apps, e-commerce, editorial websites, corporate websites. Enables marketing teams to create highly targeted acquisition campaigns.
Digital teams, enterprice
cloud — 0$, 7$, 15$, 100$, 500$
ja
twitter12,1
Github stars ( open source)open source
Open sourceNein
On-premises softwareNein
Cloud serviceja
GraphQL API, alpha
REST APIja
ja
ja
UIja
ja
( )ja
( ), «group — a repeatable group of fields», , group group
( , )Nein
, singleton
(, , , ?), .. ,
Read APIja
Ceate, update, delete APINein
CRUD APINein
API access tokensja
API API access token( , .. read)
: Draft/Publishja
ja
Nein
ja
GitNein
ja
ja
ja
Webhooksja
ja
, Professional

Ghost


Websiteghost.org
BeschreibungGhost is a fully open source, adaptable platform for building and running a modern online publication. We power blogs, magazines and journalists from Zappos to Sky News.
Powerful platform for creating an online blog or publication
Professional bloggers, serious enterprise publishers
on-premises — free; cloud — 29$, 79$, 199$
ja
twitter24,1
Github stars ( open source)28,7
Open sourceja
On-premises softwareja
Cloud serviceja
GraphQL APINein
REST APIja
Nein
Nein
UINein
Nein
( )Nein
( )Nein
( , )Nein
Nein
(, , , ?)Nein
Read APIja
Ceate, update, delete APINein
CRUD APINein
API access tokensja
API API access tokenNein
: Draft/Publishja
ja
Nein
Nein
GitNein
ja
ja
Nein
Webhooksja
ja
ja
Weitere Informationenwordpress, editing tool


Schlussfolgerungen


Im Großen und Ganzen erwartete ich von kopflosen CMS zwei Hauptaspekte: Freiheit beim Erstellen von Modellen, dank derer Sie jedes Protokoll implementieren können, und ein ähnliches Versionskontrollsystem, damit alle Änderungen transparent verwaltet werden können.
Und eine leichte Enttäuschung erwartete mich. Obwohl Sie mit den meisten dieser Systeme arbeiten können, haben sie eine Reihe von Nachteilen, die für mich unangenehm sind. Dies bedeutet natürlich nicht, dass die Systeme schlecht sind, sondern nur, dass sie meine Erwartungen nicht erfüllt haben und meine Erwartungen meine Probleme sind. Ich werde sie aussprechen:
  • headless cms . , , . , , , , . , , . - Cloud CMS, Cockpit Cosmic JS.
  • : , , . , - , — . , - , :
     { "oneOf": [ { "type": "number", "multipleOf": 5 }, { "type": "number", "multipleOf": 3 } ] } 

    Cockpit.
  • , . , number, 100. , maximum: 50? ? GraphCMS.
  • Git Cloud CMS Netlify CMS.

Als ich bei dieser Aktiengesellschaft arbeitete, konnten wir leider keines dieser Systeme übernehmen. Cloud CMS war am besten für unsere Bedürfnisse geeignet, aber der Preis dafür ist schlecht.

Fazit


So führte mich diese Analyse zu dem Gedanken, dass ich meine kopflosen CMS schreiben muss. Sie haben sie bereits gesehen, an ihrem Beispiel wurde eine Lösung für ein Problem demonstriert. Es heißt Any JSON CMS .

UPDATE: Jedes JSON-CMS ist zu einer Open-Source-Lösung geworden. Das Github-Repository befindet sich hier .

Ihr Hauptziel ist es, Freiheit bei der Erstellung beliebig komplexer Modelle zu bieten und alle Änderungen mithilfe eines git-ähnlichen Systems zu steuern. Weit entfernt von allem, was ich gerne implementiert hätte, hat es bereits die Hauptbotschaft.

Source: https://habr.com/ru/post/de444600/


All Articles