Revisão de 14 cms sem cabeça 2019

Há algum tempo, em uma empresa pública de destaque no mercado russo em que eu trabalhava, surgiu a pergunta sobre o uso de cms sem cabeça. Entre as muitas implementações, uma teve que ser escolhida. Esta é uma história sobre como formei critérios de seleção, como analisei cms e como essa análise me levou a pensar que precisava escrever o meu. Visão geral de 14 cms sem cabeça sob o corte.



O que é um CMS sem cabeça?


Embora o termo não seja novo, por algum motivo esse tópico é extremamente pouco abordado na Internet em russo. Então, de acordo com a wikipedia :
Um sistema de gerenciamento de conteúdo sem cabeçalho , ou CMS sem cabeçalho , é um sistema de gerenciamento de conteúdo (CMS) somente de back-end criado a partir do zero como um repositório de conteúdo que torna o conteúdo acessível por meio de uma API RESTful para exibição em qualquer dispositivo.
O sistema de gerenciamento de conteúdo sem cabeça ou CMS sem cabeça é um sistema de gerenciamento de conteúdo (CMS) baseado em servidor, que é inicialmente um repositório de conteúdo e fornece acesso ao conteúdo por meio da API RESTful para exibição em qualquer dispositivo.

Em outras palavras, cms sem cabeça é um conceito, um tipo especial de cms-ok, segundo o qual o cms é responsável apenas pelo gerenciamento de conteúdo "puro". Isso permite que você separe a camada de dados, gerenciada em cms, da camada de exibição, que é controlada pelo aplicativo cliente. O conteúdo é distribuído em um formato universal, geralmente em JSON, e isso possibilita o gerenciamento simultâneo de um site, um aplicativo móvel e qualquer dispositivo conectado à Internet.

Você pode ler mais sobre os prós e contras de um conceito desse tipo neste artigo , ou este , ou novamente em um artigo da wikipedia .

Imersão no contexto


Para determinar os critérios de pesquisa e entender qual cms sem cabeça é melhor que outros, tive que responder à pergunta - qual é o melhor? Que tarefas específicas ele deve resolver e como?

Para demonstrar minha atual linha de pensamento, criei um problema típico e o resolvi usando um dos cms decapitados. E, embora, na realidade, tudo tenha sido um pouco diferente, esse formato de narração é mais conciso e reflete a essência e revela melhor o tópico dos cms sem cabeça.

Então, vamos imaginar que uma tarefa chegue ao desenvolvimento. O site precisa implementar uma nova seção na qual os usuários lerão resenhas de filmes.
As condições são as seguintes:
  • no momento, você precisa exibir apenas o nome do filme, o pôster, o nome do diretor e o texto da resenha, mas no futuro a estrutura ficará mais complicada, informações sobre honorários, atores etc. serão exibidas;
  • uma pessoa sem formação técnica, um gerente de conteúdo, precisará adicionar e alterar revisões e, para isso, um recurso de desenvolvimento não deve estar envolvido;
  • essa funcionalidade deve ser desativada, ou seja, precisa implementar alternância de recursos;
  • Antes de publicar o conteúdo, o gerente de conteúdo deve poder ver em um ambiente de teste como as edições serão exibidas.

Esses são os requisitos que vieram de um cliente interno. O lado do desenvolvimento tem sua própria visão técnica para implementação, a saber:
  • o cliente não deve poder atirar no joelho, ou seja, o gerente de conteúdo não deve quebrar nada, mesmo que ele queira. Ele deve apenas editar o que os desenvolvedores imaginaram;
  • deve poder gerenciar versões e reverter se algo acontecer;
  • não se sabe qual funcionalidade adicional aparecerá no futuro, o que significa que complicar ou alterar uma seção deve ser fácil;
  • no lado da segurança: o sistema deve estar em nosso servidor e não em uma nuvem estranha, ou seja, deve poder implantar no local.

Bem, a tarefa é clara. Eu passo para a decisão.

Vou usar qualquer JSON CMS , este é um dos cms sem cabeça. Observo que, no momento, ele não atende a todos os requisitos descritos acima. Por exemplo, o gerenciador de conteúdo não poderá ver em um ambiente de teste como serão as edições. No entanto, todas as vantagens e desvantagens serão visíveis mais tarde. Agora estou tentando "sentir" um cenário típico de trabalho com qualquer cms sem cabeça.

A primeira coisa a fazer é descrever os modelos. O modelo responde à pergunta: como deve ser a entidade de conteúdo? Qual é a estrutura dela? Em essência, este é um protocolo de interação entre o cms e um aplicativo cliente. No nosso caso - uma revisão do filme - o objeto contém:
  • 3 propriedades obrigatórias: título do filme, cartaz do filme, texto de revisão;
  • 1 propriedade opcional: objeto “diretor”, que por sua vez contém 2 propriedades necessárias, nome e sobrenome.

No esquema de visualização do JSON, o modelo se parece com o seguinte:
{ 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, }, }, } 

Você também precisa implementar a alternância de recursos, um modelo no formato JSON Schema se parece com isso:
 { type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, } 

Quando você entender como os modelos devem aparecer, é possível criá-los em Qualquer JSON CMS.



Crio imediatamente entidades de conteúdo, ou seja, o conteúdo em si, com base em modelos. Uma revisão fictícia e uma entidade de alternância de recurso.



Para integrar o aplicativo cliente ao cms, é necessária uma chave de API. Eu o gero na seção correspondente cms.


Agora tudo está pronto para a implementação da funcionalidade no aplicativo cliente e a integração com o cms. O aplicativo cliente pode ser qualquer coisa - um site ou aplicativo móvel, ou ambos, escrito em qualquer coisa. Como exemplo, eu implemento a funcionalidade no site do SPA no React. De fato, pegamos os dados com a estrutura fixa já conhecida do cms e exibimos da maneira 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 

Só isso. Agora, o gerenciador de conteúdo pode gerenciar revisões com facilidade, e também há a oportunidade de ativar e desativar a funcionalidade usando a alternância de recursos.

A exibição de resenhas para filmes é um exemplo simples, citei deliberadamente para não me afogar em detalhes, mas apenas para demonstrar o princípio. Na realidade, os recursos podem ser uma ordem de magnitude mais complicada. Podem ser elementos de interface, catálogos de produtos, widgets complexos, páginas de entrada, geradores de formulários, postagens etc. Além disso, neste exemplo, o cms apenas divulga informações, mas a maioria dos cms sem cabeça fornece APIs CRUD, o que possibilita, por exemplo, processar formulários e geralmente manipular entidades, qualquer que seja. Em geral, a idéia de cms decapitado é precisamente fornecer liberdade e conveniência na implementação de um protocolo arbitrariamente complexo, a fim de transferir o controle para cms de qualquer coisa e conforme necessário.

Critérios de seleção e análise cms decapitado


Depois de entender quais tarefas seriam resolvidas com o uso de cms sem cabeça e como, selecionei os critérios e comecei a estudar os sistemas. Atualmente, existem 54 cms de acordo com headlesscms.org . A análise de todos eles é um processo bastante demorado, por isso destaquei os 14 sistemas mais populares, notáveis ​​e discutidos: Qualquer JSON CMS, Contentful, Strapi, GraphCMS, Squidex, Butter CMS, Cloud CMS, ockpit, Cosmic JS, Directus, Kentico Cloud, Netlify CMS Prismático, fantasma.

Os resultados são mais convenientes para estudar na forma de uma tabela . Mas duplique aqui.

Qualquer JSON CMS


Siteanyjsoncms.com
Descrição do produtoCMS sem cabeça que pode ajudar a gerenciar e entregar qualquer JSON para qualquer aplicativo
Público-alvoEquipes digitais
Preço por mêsna premissa - grátis
Oportunidade de Suporte Comercialsim
Seguidores no twitter0 mil
Estrelas do Github (se de código aberto)0 mil
Solução de código abertosim
Software localsim
Serviço em nuvemnão
API do GraphQLnão
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)não
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)sim
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)sim
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdonão
API CRUD para modelosnão
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APInão
Sistema de publicação: Rascunho / publicaçãonão
Capacidade de publicação atrasadanão
Fixando versões do modelonão
Confirmando versões da entidade de conteúdonão
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhooksnão
Gerenciamento de usuáriosnão
Controle de Acesso do Usuárionão

Contencioso


Sitecontentful.com
Descrição do produtoAtualize uma vez e publique em qualquer lugar, para que as equipes construam produtos digitais mais rapidamente.
DestinoGerenciamento de conteúdo no mundo multicanal
Público-alvoEquipes digitais, empresas
Preço por mêscloud - free, $ 39, $ 879, preço oculto para empresa
Oportunidade de Suporte Comercialsim
Seguidores no twitter33,6 mil
Estrelas do Github (se de código aberto)não é de código aberto
Solução de código abertonão
Software localnão
Serviço em nuvemsim
API do GraphQLsim
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)sim
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)não
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelossim
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APIsim
Sistema de publicação: Rascunho / publicaçãosim
Capacidade de publicação atrasadanão
Fixando versões do modelosim
Confirmando versões da entidade de conteúdosim
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim

Strapi


Sitestrapi.io
Descrição do produtoGerencie seu conteúdo. Distribua-o em qualquer lugar.
DestinoCrie uma API de conteúdo poderosa sem esforço
Público-alvoDesenvolvedores profissionais
Preço por mêsna premissa - grátis
Oportunidade de Suporte Comercialsim
Seguidores no twitter2,3 mil
Estrelas do Github (se de código aberto)11,1 mil
Solução de código abertosim
Software localsim
Serviço em nuvemnão
API do GraphQLsim
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)não
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)não
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelosnão
Tokens de acesso ao suporte da APInão
Diferenciação de direitos de acesso à API por token de acesso à APIsim
Sistema de publicação: Rascunho / publicaçãonão
Capacidade de publicação atrasadanão
Fixando versões do modelonão
Confirmando versões da entidade de conteúdonão
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetosnão, mas você pode implantar uma instância separada do cms
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhooksnão, mas pode ser implementado por meio de retornos de chamada do ciclo de vida
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim
Informações AdicionaisEstudei a versão alfa, houve bugs ao salvar o modelo

GraphCMS


Sitegraphcms.com
Descrição do produtoTrazer conteúdo para qualquer plataforma
DestinoInfraestrutura de conteúdo para seu produto digital
Público-alvoDesenvolvedores profissionais, agências, empresas
Preço por mêsnuvem - grátis, US $ 49, US $ 149, US $ 499, preço oculto para empresas
Oportunidade de Suporte Comercialsim
Seguidores no twitter2,4 mil
Estrelas do Github (se de código aberto)não é de código aberto
Solução de código abertonão
Software localnão
Serviço em nuvemsim
API do GraphQLsim
API RESTnão
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)não
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)não
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)sim, não permite alterar o modelo ou a alteração leva à perda de dados após a confirmação
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelosnão
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APIsim
Sistema de publicação: Rascunho / publicaçãosim
Capacidade de publicação atrasadanão
Fixando versões do modelonão
Confirmando versões da entidade de conteúdonão
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim

Squidex


Sitesquidex.io
Descrição do produtoO Squidex permite gerenciar o conteúdo em um local central e usar sua pilha de tecnologia para aplicativos, sites e serviços.
DestinoNossa primeira prioridade é oferecer um hub de gerenciamento de conteúdo de última geração, estável, rápido e gratuito para facilitar a vida dos desenvolvedores.
Público-alvoDesenvolvedores profissionais
Preço por mêssem nuvem, US $ 19, US $ 49, US $ 99; local - grátis
Oportunidade de Suporte Comercialnão anunciado
Seguidores no twitter0 mil
Estrelas do Github (se de código aberto)0,5 mil
Solução de código abertosim
Software localsim
Serviço em nuvemsim
API do GraphQLsim
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)não
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)não
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específicovocê pode especificar um conteúdo ou vários conteúdos, um número específico não pode ser especificado
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelosnão
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APIsim
Sistema de publicação: Rascunho / publicaçãosim
Capacidade de publicação atrasadasim
Fixando versões do modelonão
Confirmando versões da entidade de conteúdosim
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim

Manteiga cms


Sitebuttercms.com
Descrição do produtoAdicione um blog ou CMS ao seu site em minutos. Entre no nosso CMS sem cabeça e volte a problemas mais interessantes.
DestinoColoque o nosso CMS baseado em API em qualquer pilha de tecnologia em minutos.
Público-alvoStartups, agências, empresas
Preço por mêscloud - $ 24, $ 83, $ 166, preço oculto para empresas
Oportunidade de Suporte Comercialsim
Seguidores no twitter0,4 mil
Estrelas do Github (se de código aberto)não é de código aberto
Solução de código abertonão
Software localnão
Serviço em nuvemsim
API do GraphQLnão
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)não
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)não
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdonão
API CRUD para modelosnão
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APInão (e não é necessário, porque só há leitura)
Sistema de publicação: Rascunho / publicaçãosim
Capacidade de publicação atrasadanão
Fixando versões do modelonão
Confirmando versões da entidade de conteúdosim
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim

Cloud cms


Sitecloudcms.com
Descrição do produtoFácil para editores de conteúdo + poderoso para desenvolvedores
DestinoCMS para aplicativos críticos para os negócios
Público-alvoEmpresa
Preço por mêsUS $ 200, US $ 800, US $ 1.200
Oportunidade de Suporte Comercialsim
Seguidores no twitter0,3 mil
Estrelas do Github (se de código aberto)não é de código aberto
Solução de código abertonão
Software localsim
Serviço em nuvemsim
API do GraphQLsim
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)sim
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)sim
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)não
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelossim
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APInão
Sistema de publicação: Rascunho / publicaçãosim, você pode habilitá-lo nas configurações
Capacidade de publicação atrasadanão
Fixando versões do modelosim
Confirmando versões da entidade de conteúdosim
Sistema de versão semelhante ao Gitsim
Gerenciamento de projetossim
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim
Informações AdicionaisMuito poderoso, existem todos os níveis de empreendedorismo e muito mais. Devido à abundância de funcionalidades, você precisa de um pouco mais de tempo para entendê-las.

ockpit


Sitegetcockpit.com
Descrição do produtoPlataforma de conteúdo simples para gerenciar qualquer conteúdo estruturado
DestinoAdicione funcionalidade de gerenciamento de conteúdo a qualquer site - plug & play / headless / api-first CMS
Público-alvoEquipes digitais
Preço por mêslocal - grátis
Oportunidade de Suporte Comercialsim
Seguidores no twitter0,7 mil
Estrelas do Github (se de código aberto)3,5 mil
Solução de código abertosim
Software localsim
Serviço em nuvemnão
API do GraphQLnão, mas implementado através da instalação de um complemento
API RESTsim
A entidade de conteúdo é criada com base no modelo.sim
É possível criar seus próprios modelossim
É possível criar seus próprios modelos através da interface do usuáriosim
Um modelo pode conter um link para outro modelo.sim
É possível combinar links (por exemplo, um modelo pode vincular a um dos dois modelos)sim, usando o tipo repetidor
É possível criar modelos aninhados (por exemplo, um objeto contém outro objeto)sim
É possível combinar modelos (por exemplo, um campo pode ser uma sequência ou um número)sim, usando o tipo repetidor
É possível especificar quantas entidades de conteúdo podem ser criadas com base em um modelo específiconão, é possível criar apenas modelos singleton
Gerenciando conflitos detectados entre o modelo e a entidade de conteúdo (por exemplo, se você alterar o modelo para que a entidade de conteúdo existente não satisfaça essas alterações, o sistema poderá resolver essas situações?)não
API de leitura para entidades de conteúdosim
Criar, atualizar, excluir API para entidades de conteúdosim
API CRUD para modelossomente leitura e atualização
Tokens de acesso ao suporte da APIsim
Diferenciação de direitos de acesso à API por token de acesso à APIsim, por meio de configurações de permissões de coleções
Sistema de publicação: Rascunho / publicaçãonão
Capacidade de publicação atrasadanão
Fixando versões do modelonão
Confirmando versões da entidade de conteúdosim
Sistema de versão semelhante ao Gitnão
Gerenciamento de projetosnão, mas você pode implantar uma instância separada do cms
Gerenciamento de imagemsim
Gerenciamento de arquivossim
Webhookssim
Gerenciamento de usuáriossim
Controle de Acesso do Usuáriosim, através da configuração do grupo
Informações AdicionaisUma solução decente de código aberto. Algumas configurações são definidas através da configuração, e não através da interface. , repeater, JSON. PHP.

Cosmic JS


Sitecosmicjs.com
Descrição do produtoModern Content Management Solution. The leading CMS for modern digital teams.
The Cosmic JS Headless CMS gives your team everything you need to get the job done.
Digital teams, enterprice
44$, 179$, 449$, 359$, 719$
twitter2,8
Github stars ( open source)open source
Open source
On-premises software
Cloud service
GraphQL API
REST API
, , . I.e. -> .
UI
( ), :
  • Object
  • Object Object Type

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

Directus


Sitedirectus.io
Descrição do produtoPremium 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 API
REST API
UI
( )
( ), group,
( , )
, singleton
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens, , ,
API API access token,
: Draft/Publish
Git
, cms
Webhooks, , php
«Something is wrong with this instance's server or database.» . . 10 . — 5 . , , . . - . , Directus Stable, .. .

Kentico Cloud


Sitekenticocloud.com
Descrição do produtoStop 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 source
On-premises software
Cloud service
GraphQL API
REST API
UI
( )
( ), Content Type Snippets, , snippet snippet
( , )
(, , , ?)
Read API
Ceate, update, delete API, professional
CRUD API, beta , professional
API access tokens, professional
API API access token, API token ,
: Draft/Publish
Git
Webhooks
, contentfull. .

Netlify CMS


Sitenetlifycms.org
Descrição do produtoOpen 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 service
GraphQL API
REST API, git
UI, yml
( )
( ), object ,
( , )
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token
: Draft/Publish, editorial_workflow on, GitHub
Git
, cms
, , ,
, , ,
Webhooks
, cms , git ( bitbucket, github, gitlab .)
, git
— 2.5.1. CMS — . , git .

Prismic


Siteprismic.io
Descrição do produtoOne 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 source
On-premises software
Cloud service
GraphQL API, alpha
REST API
UI
( )
( ), «group — a repeatable group of fields», , group group
( , )
, singleton
(, , , ?), .. ,
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token( , .. read)
: Draft/Publish
Git
Webhooks
, Professional

Ghost


Siteghost.org
Descrição do produtoGhost 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 API
REST API
UI
( )
( )
( , )
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token
: Draft/Publish
Git
Webhooks
Informações AdicionaisO projeto surgiu do wordpress, uma poderosa ferramenta de edição.


Conclusões


De um modo geral, a partir de cms sem cabeça, eu esperava ver duas coisas principais: liberdade na criação de modelos, graças à qual você pode implementar qualquer protocolo, e git um sistema de controle de versão semelhante para que todas as alterações possam ser gerenciadas de forma transparente.
E uma ligeira decepção me esperava. Embora você possa trabalhar com a maioria desses sistemas, eles têm várias desvantagens que são desagradáveis ​​para mim. Isso, é claro, não significa que os sistemas sejam ruins, apenas significa que eles não atenderam às minhas expectativas, e minhas expectativas são meus problemas. Eu darei voz a eles:
  • 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.

Infelizmente, quando trabalhei nessa empresa pública, não conseguimos usar nenhum desses sistemas. O Cloud CMS foi mais adequado às nossas necessidades, mas o preço é pequeno.

Conclusão


Foi assim que essa análise me levou a pensar que eu precisava escrever meus cms decapitados. Você já a viu; no exemplo dela, houve uma demonstração de uma solução para um problema. É chamado Qualquer JSON CMS .

ATUALIZAÇÃO: Qualquer JSON CMS se tornou uma solução de código aberto, o repositório do github está aqui .

Seu principal objetivo é fornecer liberdade na criação de modelos arbitrariamente complexos e controlar todas as alterações usando um sistema semelhante ao git. Agora, longe de tudo o que eu gostaria de ter implementado, ele já tem a principal "mensagem".

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


All Articles