Revisión de 14 cms sin cabeza 2019

Hace algún tiempo, en una importante empresa pública en el mercado ruso donde trabajaba, surgió la pregunta sobre el uso de cms sin cabeza. Entre las muchas implementaciones, una tuvo que ser elegida. Esta es una historia sobre cómo formé los criterios de selección, cómo analicé cms y cómo este análisis me llevó a pensar que necesito escribir el mío. Descripción general de 14 cms sin cabeza debajo del corte.



¿Qué es un CMS sin cabeza?


Aunque el término no es nuevo, por alguna razón este tema está muy poco cubierto en Internet en ruso. Entonces, según Wikipedia :
Un sistema de gestión de contenido sin cabeza , o CMS sin cabeza , es un sistema de gestión de contenido (CMS) solo de back-end construido desde cero como un repositorio de contenido que hace que el contenido sea accesible a través de una API RESTful para mostrar en cualquier dispositivo.
El sistema de gestión de contenido sin cabeza , o CMS sin cabeza, es un sistema de gestión de contenido (CMS) basado en servidor, que inicialmente es un repositorio de contenido y proporciona acceso al contenido a través de la API RESTful para su visualización en cualquier dispositivo.

En otras palabras, cms sin cabeza es un concepto, una especie de tipo especial de cms-ok, según el cual cms solo es responsable de administrar el contenido "puro". Esto le permite separar la capa de datos, que se administra en cms, de la capa de visualización, que es controlada por la aplicación cliente. El contenido se distribuye en un formato universal, generalmente en JSON, y esto permite administrar simultáneamente un sitio web, una aplicación móvil y cualquier dispositivo conectado a Internet.

Puede leer más sobre los pros y los contras de este concepto en este artículo , o en este , o de nuevo en un artículo de Wikipedia .

Inmersión en el contexto


Para determinar los criterios de búsqueda y comprender qué cms sin cabeza es mejor que otros, tuve que responder la pregunta: ¿cuál es el mejor? ¿Qué tareas específicas debería resolver y cómo?

Para demostrar mi línea de pensamiento actual, se me ocurrió un problema típico y lo resolví usando uno de los cms sin cabeza. Y aunque en realidad todo era ligeramente diferente, este formato de narración es más conciso y refleja la esencia y revela mejor el tema de los cms sin cabeza.

Entonces, imaginemos que una tarea llega al desarrollo. El sitio necesita implementar una nueva sección en la que los usuarios leerán reseñas de películas.
Las condiciones son las siguientes:
  • por el momento, solo debe mostrar el nombre de la película, el póster, el nombre del director y el texto de la crítica, pero en el futuro la estructura se volverá más complicada, aparecerá información sobre los honorarios, actores, etc.
  • una persona sin antecedentes técnicos, un administrador de contenido, tendrá que agregar y cambiar revisiones, y para esto no debe participar un recurso de desarrollo;
  • esta funcionalidad debe estar deshabilitada, es decir necesita implementar alternar características;
  • Antes de publicar contenido, el administrador de contenido debería poder ver en un entorno de prueba cómo se verán las ediciones.

Estos son los requisitos que provienen de un cliente interno. El lado del desarrollo tiene su propia visión técnica para la implementación, a saber:
  • el cliente no debería poder dispararle en la rodilla, es decir el administrador de contenido no debe romper nada, incluso si así lo desea. Solo debe editar lo que los desarrolladores imaginaron;
  • debería poder administrar versiones y retroceder si algo sucede;
  • no se sabe qué funcionalidad adicional aparecerá en el futuro, lo que significa que complicar o cambiar una sección debería ser fácil;
  • en el lado de la seguridad: el sistema debe estar en nuestro servidor y no en una nube extraña, es decir, debería poder implementarse en las instalaciones.

Bueno, la tarea está clara. Paso a la decisión.

Usaré Any JSON CMS , este es uno de los cms sin cabeza. Observo que por el momento no cumple con todos los requisitos descritos anteriormente. Por ejemplo, el administrador de contenido no podrá ver en un entorno de prueba cómo se verán las ediciones. Sin embargo, todas las ventajas y desventajas serán visibles más adelante. Ahora estoy tratando de "sentir" un escenario típico de trabajar con cualquier cms sin cabeza.

Lo primero que debe hacer es describir los modelos. El modelo responde a la pregunta, ¿cómo debería ser la entidad de contenido? ¿Cuál es su estructura? En esencia, este es un protocolo de interacción entre cms y una aplicación cliente. En nuestro caso, una revisión de la película, el objeto contiene:
  • 3 propiedades obligatorias: título de la película, póster de la película, texto de revisión;
  • 1 propiedad opcional: objeto "director", que a su vez contiene 2 propiedades requeridas nombre y apellido.

En el modelo de vista de esquema JSON se ve así:
{ 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, }, }, } 

También debe implementar la función de alternancia, un modelo en forma de un esquema JSON se ve así:
 { type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, } 

Cuando comprenda cómo deberían verse los modelos, puede crearlos en Any JSON CMS.



Inmediatamente creo entidades de contenido, es decir El contenido en sí, basado en modelos. Una revisión ficticia y entidad de alternancia de funciones.



Para integrar la aplicación cliente con cms, se requiere una clave API. Lo genero en la sección correspondiente cms.


Ahora todo está listo para la implementación de la funcionalidad en la aplicación cliente y la integración con cms. La aplicación cliente puede ser cualquier cosa: un sitio web o una aplicación móvil, o ambas, escritas en cualquier cosa. Como ejemplo, implemento la funcionalidad en el sitio SPA en React. De hecho, tomamos los datos con la estructura fija ya conocida de cms y los mostramos de la manera que queremos.
 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 

Eso es todo. Ahora el administrador de contenido puede administrar fácilmente las revisiones, y también existe la oportunidad de habilitar y deshabilitar la funcionalidad utilizando la función de alternancia.

Mostrar reseñas de películas es un ejemplo simple, lo cité deliberadamente para no ahogarme en detalles, sino solo para demostrar el principio. En realidad, las características pueden ser un orden de magnitud más complicado. Pueden ser elementos de interfaz, catálogos de productos, widgets complejos, páginas de destino, generadores de formularios, publicaciones, etc. Además, en este ejemplo, cms solo difunde información, pero la mayoría de los cms sin cabeza proporcionan API CRUD, lo que hace posible, por ejemplo, procesar formularios, y generalmente manipulan entidades, lo que sea. En general, la idea de cms sin cabeza es precisamente proporcionar libertad y conveniencia en la implementación de un protocolo complejo arbitrario para transferir el control a cms de cualquier cosa y según sea necesario.

Criterios de selección y análisis cms sin cabeza


Después de comprender qué tareas se resolverían utilizando cms sin cabeza y cómo, seleccioné los criterios y comencé a estudiar los sistemas. Actualmente hay 54 cms según headlesscms.org . Analizarlos todos es un proceso que lleva bastante tiempo, por lo que destaqué los 14 sistemas más populares, notables y discutidos: Cualquier JSON CMS, Contentful, Strapi, GraphCMS, Squidex, Butter CMS, Cloud CMS, ockpit, Cosmic JS, Directus, Kentico Cloud, Netlify CMS , Prismic, Ghost.

Los resultados son más convenientes para estudiar en forma de tabla . Pero duplica aquí.

Cualquier JSON CMS


Sitioanyjsoncms.com
DescripciónCMS sin cabeza que podría ayudar a administrar y entregar cualquier JSON a cualquier aplicación
Público objetivoEquipos digitales
Precio por mesen las instalaciones - gratis
Oportunidad de soporte comercialsi
Seguidores en twitter0 mil
Estrellas de Github (si es de código abierto)0 mil
Solución de código abiertosi
Software localsi
Servicio en la nubeno
API GraphQLno
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)no
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)si
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)si
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidono
API CRUD para modelosno
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIno
Sistema de publicación: borrador / publicaciónno
Capacidad de publicación retrasadano
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidono
Sistema de versiones similar a Gitno
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhooksno
Gestión de usuariosno
Control de acceso de usuariono

Contento


Sitiocontentful.com
DescripciónActualice una vez y publique en todas partes, para que los equipos creen productos digitales más rápido.
DestinoGestión de contenidos en el mundo multicanal.
Público objetivoEquipos digitales, empresas
Precio por mesnube - gratis, $ 39, $ 879, precio oculto para la empresa
Oportunidad de soporte comercialsi
Seguidores en twitter33,6 mil
Estrellas de Github (si es de código abierto)no de código abierto
Solución de código abiertono
Software localno
Servicio en la nubesi
API GraphQLsi
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)si
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)no
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelossi
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIsi
Sistema de publicación: borrador / publicaciónsi
Capacidad de publicación retrasadano
Fijación de versiones del modelosi
Confirmación de versiones de entidad de contenidosi
Sistema de versiones similar a Gitno
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosi

Strapi


Sitiostrapi.io
DescripciónAdministra tu contenido. Distribuirlo en cualquier lugar.
DestinoCree una potente API de contenido sin esfuerzo
Público objetivoDesarrolladores profesionales
Precio por mesen las instalaciones - gratis
Oportunidad de soporte comercialsi
Seguidores en twitter2,3 mil
Estrellas de Github (si es de código abierto)11,1 mil
Solución de código abiertosi
Software localsi
Servicio en la nubeno
API GraphQLsi
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)no
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)no
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelosno
Tokens de acceso de soporte APIno
Diferenciación de derechos de acceso a API por token de acceso APIsi
Sistema de publicación: borrador / publicaciónno
Capacidad de publicación retrasadano
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidono
Sistema de versiones similar a Gitno
Gestión de proyectosno, pero puedes implementar una instancia separada de cms
Gestión de imagensi
Gestión de archivossi
Webhooksno, pero se puede implementar mediante devoluciones de llamada del ciclo de vida
Gestión de usuariossi
Control de acceso de usuariosi
Información adicionalEstudié la versión alfa, hubo errores al guardar el modelo

GraphCMS


Sitiographcms.com
DescripciónLleva contenido a cualquier plataforma
DestinoInfraestructura de contenido para su producto digital
Público objetivoDesarrolladores profesionales, agencias, empresas.
Precio por mesnube - gratis, $ 49, $ 149, $ 499, precio oculto para la empresa
Oportunidad de soporte comercialsi
Seguidores en twitter2,4 mil
Estrellas de Github (si es de código abierto)no de código abierto
Solución de código abiertono
Software localno
Servicio en la nubesi
API GraphQLsi
API RESTno
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)no
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)no
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)sí, o no le permite cambiar el modelo, o el cambio conduce a la pérdida de datos después de la confirmación
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelosno
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIsi
Sistema de publicación: borrador / publicaciónsi
Capacidad de publicación retrasadano
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidono
Sistema de versiones similar a Gitno
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosi

Squidex


Sitiosquidex.io
DescripciónSquidex le permite administrar el contenido en un lugar central y utilizar su paquete tecnológico para aplicaciones, sitios web y servicios.
DestinoNuestra primera prioridad es ofrecer un centro de gestión de contenido de vanguardia, estable, rápido y gratuito para facilitar un poco la vida de los desarrolladores.
Público objetivoDesarrolladores profesionales
Precio por meslibre de la nube, $ 19, $ 49, $ 99; en las instalaciones - gratis
Oportunidad de soporte comercialno anunciado
Seguidores en twitter0 mil
Estrellas de Github (si es de código abierto)0.5 mil
Solución de código abiertosi
Software localsi
Servicio en la nubesi
API GraphQLsi
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)no
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)no
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicopuede especificar contenido único o contenido múltiple, no se puede especificar un número específico
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelosno
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIsi
Sistema de publicación: borrador / publicaciónsi
Capacidad de publicación retrasadasi
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidosi
Sistema de versiones similar a Gitno
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosi

Mantequilla cms


Sitiobuttercms.com
DescripciónAgregue un blog o CMS a su sitio en minutos. Ingrese a nuestro CMS sin cabeza y regrese a problemas más interesantes.
DestinoColoque nuestro CMS basado en API en cualquier pila de tecnología en minutos.
Público objetivoStartups, agencias, empresas
Precio por mesnube: $ 24, $ 83, $ 166, precio oculto para la empresa
Oportunidad de soporte comercialsi
Seguidores en twitter0.4 mil
Estrellas de Github (si es de código abierto)no de código abierto
Solución de código abiertono
Software localno
Servicio en la nubesi
API GraphQLno
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)no
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)no
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidono
API CRUD para modelosno
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIno (y no es obligatorio, porque solo hay lectura)
Sistema de publicación: borrador / publicaciónsi
Capacidad de publicación retrasadano
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidosi
Sistema de versiones similar a Gitno
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosi

Nube cms


Sitiocloudcms.com
DescripciónFácil para editores de contenido + Potente para desarrolladores
DestinoCMS para aplicaciones críticas de negocios
Público objetivoEnterprise
Precio por mes$ 200, $ 800, $ 1,200
Oportunidad de soporte comercialsi
Seguidores en twitter0.3 mil
Estrellas de Github (si es de código abierto)no de código abierto
Solución de código abiertono
Software localsi
Servicio en la nubesi
API GraphQLsi
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)si
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)si
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)no
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelossi
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIno
Sistema de publicación: borrador / publicaciónsí, puedes habilitarlo en la configuración
Capacidad de publicación retrasadano
Fijación de versiones del modelosi
Confirmación de versiones de entidad de contenidosi
Sistema de versiones similar a Gitsi
Gestión de proyectossi
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosi
Información adicionalMuy poderoso, hay todos los chips de nivel emprendedor, y aún más. Debido a la abundancia de funcionalidad, necesita un poco más de tiempo para comprenderlo.

ockpit


Sitiogetcockpit.com
DescripciónPlataforma de contenido simple para administrar cualquier contenido estructurado
DestinoAgregue funcionalidad de administración de contenido a cualquier sitio: plug & play / headless / api-first CMS
Público objetivoEquipos digitales
Precio por mesen las instalaciones - gratis
Oportunidad de soporte comercialsi
Seguidores en twitter0.7 mil
Estrellas de Github (si es de código abierto)3,5 mil
Solución de código abiertosi
Software localsi
Servicio en la nubeno
API GraphQLno, pero implementado mediante la instalación de un complemento
API RESTsi
La entidad de contenido se crea según el modelo.si
Es posible crear sus propios modelos.si
Es posible crear sus propios modelos a través de la interfaz de usuariosi
Un modelo puede contener un enlace a otro modelo.si
Es posible combinar enlaces (por ejemplo, un modelo puede enlazar a cualquiera de los dos modelos)sí, usando el tipo de repetidor
Es posible crear modelos anidados (por ejemplo, un objeto contiene otro objeto)si
Es posible combinar modelos (por ejemplo, un campo puede ser una cadena o un número)sí, usando el tipo de repetidor
Es posible especificar cuántas entidades de contenido se pueden crear en función de un modelo específicono, es posible crear solo modelos singleton
Gestión de conflictos detectados entre el modelo y la entidad de contenido (por ejemplo, si cambia el modelo para que la entidad de contenido existente no satisfaga estos cambios, ¿puede el sistema resolver tales situaciones?)no
Leer API para entidades de contenidosi
Ceate, actualiza, elimina API para entidades de contenidosi
API CRUD para modelossolo leer y actualizar
Tokens de acceso de soporte APIsi
Diferenciación de derechos de acceso a API por token de acceso APIsí, a través de la configuración de permisos de colecciones
Sistema de publicación: borrador / publicaciónno
Capacidad de publicación retrasadano
Fijación de versiones del modelono
Confirmación de versiones de entidad de contenidosi
Sistema de versiones similar a Gitno
Gestión de proyectosno, pero puedes implementar una instancia separada de cms
Gestión de imagensi
Gestión de archivossi
Webhookssi
Gestión de usuariossi
Control de acceso de usuariosí, a través de la configuración del grupo
Información adicionalUna solución decente de código abierto. Algunos ajustes se configuran a través de la configuración y no a través de la interfaz. Por ejemplo, para configurar el tipo de repetidor, debe estudiar la documentación y escribir opciones a través de JSON. Está escrito en PHP.

Js cósmico


Sitiocosmicjs.com
DescripciónSolución moderna de gestión de contenidos. El CMS líder para equipos digitales modernos.
DestinoEl CMS sin cabeza Cosmic JS le brinda a su equipo todo lo que necesita para hacer el trabajo.
Público objetivoEquipos digitales, enterprice
Precio por mes$ 44, $ 179, $ 449, $ 359, $ 719
twitter2,8
Github stars ( open source)open source
Open sourceno
On-premises software
Cloud service
GraphQL API
REST API
, , . Es decir -> .
UI
( ), :
  • Object
  • Object Object Type

( )
( , )no
no
(, , , ?)no
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token, read write
: Draft/Publish
no
Gitno
Webhooks

Directus


Sitiodirectus.io
DescripciónPremium 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
twitter19,4
Github stars ( open source)3,8
Open source
On-premises software
Cloud service, -
GraphQL APIno
REST API
UI
( )no
( ), group,
( , )no
, singleton
(, , , ?)no
Read API
Ceate, update, delete API
CRUD API
API access tokens, , ,
API API access token,
: Draft/Publishno
no
no
Gitno
, cms
Webhooks, , php
«Something is wrong with this instance's server or database.» . . 10 . — 5 . , , . . - . , Directus Stable, .. .

Kentico Cloud


Sitiokenticocloud.com
DescripciónStop 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
twitter1
Github stars ( open source)open source
Open sourceno
On-premises softwareno
Cloud service
GraphQL APIno
REST API
UI
( )
( ), Content Type Snippets, , snippet snippet
( , )no
no
(, , , ?)no
Read API
Ceate, update, delete API, professional
CRUD API, beta , professional
API access tokens, professional
API API access token, API token ,
: Draft/Publish
no
Gitno
Webhooks
, contentfull. .

Netlify CMS


Sitionetlifycms.org
DescripciónOpen 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 source
On-premises software
Cloud serviceno
GraphQL APIno
REST API, git
UI, yml
( )no
( ), object ,
( , )no
no
(, , , ?)no
Read APIno
Ceate, update, delete APIno
CRUD APIno
API access tokensno
API API access tokenno
: Draft/Publish, editorial_workflow on, GitHub
no
Git
, cms
, , ,
, , ,
Webhooksno
, cms , git ( bitbucket, github, gitlab .)
, git
— 2.5.1. CMS — . , git .

Prismic


Sitioprismic.io
DescripciónOne 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$
twitter12,1
Github stars ( open source)open source
Open sourceno
On-premises softwareno
Cloud service
GraphQL API, alpha
REST API
UI
( )
( ), «group — a repeatable group of fields», , group group
( , )no
, singleton
(, , , ?), .. ,
Read API
Ceate, update, delete APIno
CRUD APIno
API access tokens
API API access token( , .. read)
: Draft/Publish
no
Gitno
Webhooks
, Professional

Ghost


Sitioghost.org
DescripciónGhost 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$
twitter24,1
Github stars ( open source)28,7
Open source
On-premises software
Cloud service
GraphQL APIno
REST API
no
no
UIno
no
( )no
( )no
( , )no
no
(, , , ?)no
Read API
Ceate, update, delete APIno
CRUD APIno
API access tokens
API API access tokenno
: Draft/Publish
no
no
Gitno
no
Webhooks
wordpress, editing tool


Conclusiones


En general, desde el cms sin cabeza, esperaba ver dos cosas principales: libertad para crear modelos, gracias a los cuales puede implementar cualquier protocolo, y obtener un sistema de control de versiones similar para que pueda administrar de manera transparente todos los cambios.
Y una ligera decepción me esperaba. Aunque puede trabajar con la mayoría de estos sistemas, tienen una serie de desventajas que son desagradables para mí. Esto, por supuesto, no significa que los sistemas sean malos, solo significa que no cumplieron mis expectativas, y mis expectativas son mis problemas. Los expresaré:
  • 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.

Desafortunadamente, cuando trabajaba en esa empresa pública, no pudimos tomar ninguno de estos sistemas. Cloud CMS fue el más adecuado para nuestras necesidades, pero el precio de la misma mordió.

Conclusión


Así es como este análisis me llevó a pensar que necesito escribir mi cms sin cabeza. Ya la has visto, en su ejemplo fue una demostración de la solución al problema. Se llama Any JSON CMS .

ACTUALIZACIÓN: Cualquier JSON CMS se ha convertido en una solución de código abierto, el repositorio de github está aquí .

Su objetivo principal es proporcionar libertad para crear modelos arbitrariamente complejos y controlar todos los cambios utilizando un sistema similar a git. Ahora, lejos de todo lo que me gustaría haber implementado, ya tiene el "mensaje" principal.

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


All Articles