Ulasan dari 14 cm tanpa kepala 2019

Beberapa waktu lalu, di salah satu perusahaan publik terkemuka di pasar Rusia tempat saya bekerja, muncul pertanyaan tentang penggunaan cm tanpa kepala. Di antara banyak implementasi, satu harus dipilih. Ini adalah cerita tentang bagaimana saya membentuk kriteria seleksi, bagaimana saya menganalisis cm, dan bagaimana analisis ini membuat saya berpikir bahwa saya perlu menulis sendiri. Tinjauan 14 cm tanpa kepala di bawah potongan.



Apa itu CMS tanpa kepala?


Meskipun istilah ini tidak baru, untuk beberapa alasan topik ini sangat sedikit dibahas di Internet berbahasa Rusia. Jadi menurut wikipedia :
Sistem manajemen konten tanpa kepala , atau CMS tanpa kepala , adalah sistem manajemen konten (CMS) back-end saja yang dibangun dari bawah ke atas sebagai repositori konten yang membuat konten dapat diakses melalui RESTful API untuk ditampilkan pada perangkat apa pun.
Sistem manajemen konten tanpa kepala , atau CMS tanpa kepala adalah sistem manajemen konten berbasis server (CMS), yang pada awalnya merupakan repositori konten dan menyediakan akses ke konten melalui RESTful API untuk ditampilkan pada perangkat apa pun.

Dengan kata lain, cms tanpa kepala adalah konsep, sejenis cms-ok, yang menurutnya cms hanya bertanggung jawab untuk mengelola konten “murni”. Ini memungkinkan Anda untuk memisahkan lapisan data, yang dikelola dalam cms, dari lapisan tampilan, yang dikendalikan oleh aplikasi klien. Konten didistribusikan dalam format universal, biasanya dalam JSON, dan ini memungkinkan untuk mengelola situs web, aplikasi seluler, dan perangkat apa pun yang terhubung ke Internet secara bersamaan.

Anda dapat membaca lebih lanjut tentang pro dan kontra dari konsep seperti itu di artikel ini, atau yang ini , atau lagi di artikel wikipedia .

Pencelupan dalam konteks


Untuk menentukan kriteria pencarian dan memahami cm tanpa kepala mana yang lebih baik daripada yang lain, saya harus menjawab pertanyaan - apa yang terbaik? Apa tugas khusus yang harus diselesaikan dan bagaimana?

Untuk menunjukkan pemikiran saya saat ini, saya menemukan masalah yang khas dan menyelesaikannya menggunakan salah satu cm tanpa kepala. Dan meskipun dalam kenyataannya semuanya sedikit berbeda, format narasi ini lebih ringkas dan mencerminkan esensi dan lebih baik mengungkapkan topik cm tanpa kepala.

Jadi, mari kita bayangkan bahwa tugas datang ke pengembangan. Situs perlu menerapkan bagian baru di mana pengguna akan membaca ulasan untuk film.
Syaratnya adalah sebagai berikut:
  • saat ini, Anda hanya perlu menampilkan nama film, poster, nama sutradara dan teks ulasan, tetapi di masa depan strukturnya akan menjadi lebih rumit, informasi tentang biaya, aktor, dll.
  • seseorang tanpa latar belakang teknis, seorang manajer konten, harus menambahkan dan mengubah ulasan, dan untuk ini sumber daya pengembangan tidak boleh dilibatkan;
  • fungsi ini harus dinonaktifkan, mis. perlu mengimplementasikan fitur toggle;
  • Sebelum menerbitkan konten, pengelola konten harus dapat melihat di lingkungan pengujian bagaimana pengeditan akan terlihat.

Ini adalah persyaratan yang berasal dari pelanggan internal. Sisi pengembangan memiliki visi teknis sendiri untuk implementasi, yaitu:
  • pelanggan seharusnya tidak dapat menembak lututnya, mis. manajer konten tidak boleh merusak apa pun, bahkan jika dia mau. Seharusnya hanya mengedit apa yang dibayangkan pengembang;
  • harus dapat mengelola versi dan mundur jika terjadi sesuatu;
  • tidak diketahui fungsionalitas tambahan apa yang akan muncul di masa depan, yang berarti mempersulit atau mengubah suatu bagian harus mudah;
  • di sisi keamanan: sistem harus di server kami, dan tidak di cloud yang aneh, mis. harus dapat menggunakan di tempat.

Nah, tugasnya jelas. Saya memberikan keputusan.

Saya akan menggunakan JSON CMS , ini adalah salah satu cm tanpa kepala. Saya perhatikan bahwa saat ini tidak memenuhi semua persyaratan yang dijelaskan di atas. Misalnya, pengelola konten tidak akan dapat melihat di lingkungan pengujian bagaimana pengeditan akan terlihat. Namun, semua kelebihan dan kekurangan akan terlihat nanti. Sekarang saya mencoba untuk "merasakan" skenario khas bekerja dengan cm tanpa kepala.

Hal pertama yang harus dilakukan adalah mendeskripsikan model. Model menjawab pertanyaan, seperti apa bentuk entitas konten? Apa strukturnya? Intinya, ini adalah protokol interaksi antara cms dan aplikasi klien. Dalam kasus kami - tinjauan film - objek berisi:
  • 3 sifat wajib: judul film, poster film, teks ulasan;
  • 1 properti opsional: objek "direktur", yang pada gilirannya berisi 2 nama properti dan nama keluarga yang diperlukan.

Dalam model tampilan JSON Schema terlihat seperti ini:
{ 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, }, }, } 

Anda juga perlu menerapkan fitur toggle, model dalam bentuk Skema JSON terlihat seperti ini:
 { type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, } 

Ketika Anda memiliki pemahaman tentang bagaimana model seharusnya terlihat, Anda dapat membuatnya di Any JSON CMS.



Saya segera membuat entitas konten, yaitu konten itu sendiri, berdasarkan model. Satu ulasan dummy dan fitur toggle entity.



Untuk mengintegrasikan aplikasi klien dengan cms, kunci API diperlukan. Saya menghasilkannya di cms bagian yang sesuai.


Sekarang semuanya siap untuk implementasi fungsionalitas dalam aplikasi klien dan integrasi dengan cms. Aplikasi klien dapat berupa apa saja - situs web atau aplikasi seluler, atau keduanya, ditulis pada apa pun. Sebagai contoh, saya menerapkan fungsionalitas pada situs SPA di Bereaksi. Bahkan, kami mengambil data dengan struktur tetap yang sudah diketahui dari cms dan menampilkannya seperti yang kami inginkan.
 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 

Itu saja. Sekarang pengelola konten dapat dengan mudah mengelola ulasan, dan ada juga kesempatan untuk mengaktifkan dan menonaktifkan fungsi menggunakan fitur toggle.

Menampilkan ulasan untuk film adalah contoh sederhana, saya sengaja mengutipnya agar tidak tenggelam dalam detail, tetapi hanya untuk menunjukkan prinsipnya. Pada kenyataannya, fitur bisa menjadi urutan besarnya lebih rumit. Ini dapat berupa elemen antarmuka, katalog produk, widget kompleks, halaman arahan, generator formulir, pos, dll. Juga, dalam contoh ini, cm hanya menyebarkan informasi, tetapi sebagian besar cm tanpa kepala menyediakan API CRUD, yang memungkinkan, misalnya, untuk memproses formulir, dan umumnya memanipulasi entitas, apa pun. Secara umum, ide cms tanpa kepala adalah tepatnya untuk memberikan kebebasan dan kenyamanan dalam mengimplementasikan protokol kompleks yang sewenang-wenang untuk mentransfer kontrol ke cms apa pun dan sesuai kebutuhan.

Kriteria seleksi dan analisis cm tanpa kepala


Setelah saya memahami tugas apa yang akan diselesaikan dengan menggunakan cm tanpa kepala dan bagaimana, saya memilih kriteria dan mulai mempelajari sistem. Saat ini ada 54 cm menurut headlesscms.org . Menganalisa semua itu adalah proses yang agak memakan waktu, jadi saya menyoroti 14 sistem yang paling populer, terkenal dan dibahas: Setiap JSON CMS, Contentful, Strapi, GraphCMS, Squidex, Butter CMS, Cloud CMS, ockpit, Cosmic JS, Directus, Kentico Cloud, Netlify CMS , Prismik, Hantu.

Hasilnya lebih nyaman untuk belajar dalam bentuk tabel . Tapi duplikat di sini.

CMS JSON Apa Saja


Situsanyjsoncms.com
DeskripsiCMS tanpa kepala yang dapat membantu mengelola dan mengirim JSON ke aplikasi apa pun
Target audiensTim digital
Harga per bulandi tempat - gratis
Peluang Dukungan Komersialiya
Pengikut di twitter0 ribu
Bintang Github (jika open source)0 ribu
Solusi open sourceiya
Perangkat lunak di tempatiya
Layanan cloudtidak
API GraphQLtidak
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)tidak
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)iya
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)iya
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas kontentidak
API CRUD untuk modeltidak
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APItidak
Sistem Penerbitan: Draft / Publikasikantidak
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeltidak
Versi Entitas Konten yang Berkomitmentidak
Sistem versi seperti Gittidak
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webtidak
Manajemen penggunatidak
Kontrol Akses Penggunatidak

Puas


Situscontentful.com
DeskripsiPerbarui sekali dan terbitkan di mana-mana, jadi tim membuat produk digital lebih cepat.
TujuanManajemen konten di dunia multi-channel
Target audiensTim digital, perusahaan
Harga per bulanbebas cloud, $ 39, $ 879, harga tersembunyi untuk perusahaan
Peluang Dukungan Komersialiya
Pengikut di twitter33,6 ribu
Bintang Github (jika open source)bukan open source
Solusi open sourcetidak
Perangkat lunak di tempattidak
Layanan cloudiya
API GraphQLiya
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)iya
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)tidak
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modeliya
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APIiya
Sistem Penerbitan: Draft / Publikasikaniya
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeliya
Versi Entitas Konten yang Berkomitmeniya
Sistem versi seperti Gittidak
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaiya

Strapi


Situsstrapi.io
DeskripsiKelola konten Anda. Bagikan di mana saja.
TujuanBuat API konten yang kuat tanpa usaha
Target audiensPengembang profesional
Harga per bulandi tempat - gratis
Peluang Dukungan Komersialiya
Pengikut di twitter2,3 ribu
Bintang Github (jika open source)11,1 ribu
Solusi open sourceiya
Perangkat lunak di tempatiya
Layanan cloudtidak
API GraphQLiya
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)tidak
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)tidak
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modeltidak
API mendukung token aksestidak
Diferensiasi hak akses ke API dengan token akses APIiya
Sistem Penerbitan: Draft / Publikasikantidak
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeltidak
Versi Entitas Konten yang Berkomitmentidak
Sistem versi seperti Gittidak
Manajemen proyektidak, tetapi Anda dapat menggunakan instance cms yang terpisah
Manajemen gambariya
Manajemen fileiya
Situs webtidak, tetapi dapat diimplementasikan melalui callback daur hidup
Manajemen penggunaiya
Kontrol Akses Penggunaiya
Informasi tambahanSaya mempelajari versi alfa, ada bug saat menyimpan model

GraphCMS


Situsgraphcms.com
DeskripsiBawa konten ke platform apa pun
TujuanInfrastruktur konten untuk produk digital Anda
Target audiensPengembang, agensi, perusahaan profesional
Harga per bulanbebas cloud, $ 49, $ 149, $ 499, harga tersembunyi untuk perusahaan
Peluang Dukungan Komersialiya
Pengikut di twitter2,4 ribu
Bintang Github (jika open source)bukan open source
Solusi open sourcetidak
Perangkat lunak di tempattidak
Layanan cloudiya
API GraphQLiya
API SISAtidak
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)tidak
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)tidak
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)ya, itu tidak memungkinkan untuk mengubah model, atau perubahan menyebabkan hilangnya data setelah konfirmasi
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modeltidak
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APIiya
Sistem Penerbitan: Draft / Publikasikaniya
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeltidak
Versi Entitas Konten yang Berkomitmentidak
Sistem versi seperti Gittidak
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaiya

Squidex


Situssquidex.io
DeskripsiSquidex memungkinkan Anda untuk mengelola konten di tempat sentral dan menggunakan tumpukan teknologi Anda untuk aplikasi, situs web, dan layanan.
TujuanPrioritas pertama kami adalah menghadirkan hub manajemen konten yang canggih, stabil, cepat, dan gratis untuk menjadikan kehidupan pengembang lebih mudah.
Target audiensPengembang profesional
Harga per bulanbebas cloud, $ 19, $ 49, $ 99; di tempat - gratis
Peluang Dukungan Komersialtidak diumumkan
Pengikut di twitter0 ribu
Bintang Github (jika open source)0,5 ribu
Solusi open sourceiya
Perangkat lunak di tempatiya
Layanan cloudiya
API GraphQLiya
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)tidak
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)tidak
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentuAnda dapat menentukan konten tunggal atau beberapa konten, nomor tertentu tidak dapat ditentukan
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modeltidak
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APIiya
Sistem Penerbitan: Draft / Publikasikaniya
Kemampuan Penerbitan Tertundaiya
Memperbaiki Versi Modeltidak
Versi Entitas Konten yang Berkomitmeniya
Sistem versi seperti Gittidak
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaiya

Mentega cms


Situsbuttercms.com
DeskripsiTambahkan blog atau CMS ke situs Anda dalam hitungan menit. Masukkan CMS Tanpa Kepala kami dan kembalilah ke masalah yang lebih menarik.
TujuanMasukkan CMS berbasis API kami ke tumpukan teknologi apa pun dalam hitungan menit.
Target audiensStartup, agensi, perusahaan
Harga per bulancloud - $ 24, $ 83, $ 166, harga tersembunyi untuk perusahaan
Peluang Dukungan Komersialiya
Pengikut di twitter0,4 ribu
Bintang Github (jika open source)bukan open source
Solusi open sourcetidak
Perangkat lunak di tempattidak
Layanan cloudiya
API GraphQLtidak
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)tidak
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)tidak
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas kontentidak
API CRUD untuk modeltidak
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APItidak (dan tidak wajib, karena hanya baca)
Sistem Penerbitan: Draft / Publikasikaniya
Kemampuan Penerbitan Tertundatidak
Memperbaiki versitidak
Versi Entitas Konten yang Berkomitmeniya
Sistem versi seperti Gittidak
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaiya

Awan cms


Situscloudcms.com
DeskripsiMudah untuk Editor Konten + Kuat untuk Pengembang
TujuanCMS untuk aplikasi penting bisnis
Target audiensEnterprise
Harga per bulan$ 200, $ 800, $ 1.200
Peluang Dukungan Komersialiya
Pengikut di twitter0,3 ribu
Bintang Github (jika open source)bukan open source
Solusi open sourcetidak
Perangkat lunak di tempatiya
Layanan cloudiya
API GraphQLiya
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)iya
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)iya
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)tidak
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modeliya
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APItidak
Sistem Penerbitan: Draft / Publikasikanya, Anda bisa mengaktifkannya di pengaturan
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeliya
Versi Entitas Konten yang Berkomitmeniya
Sistem versi seperti Gitiya
Manajemen proyekiya
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaiya
Informasi tambahanSangat kuat, ada semua wirausaha tingkat chip, dan bahkan lebih. Karena banyaknya fungsi, Anda perlu sedikit waktu untuk memahaminya.

ockpit


Situsgetcockpit.com
DeskripsiPlatform Konten Sederhana untuk mengelola konten terstruktur
TujuanTambahkan fungsionalitas manajemen konten ke situs mana pun - pasang & mainkan / tanpa kepala / api-CMS pertama
Target audiensTim digital
Harga per bulandi tempat - gratis
Peluang Dukungan Komersialiya
Pengikut di twitter0,7 ribu
Bintang Github (jika open source)3,5 ribu
Solusi open sourceiya
Perangkat lunak di tempatiya
Layanan cloudtidak
API GraphQLtidak, tetapi diimplementasikan melalui pemasangan addon
API SISAiya
Entitas konten dibuat berdasarkan model.iya
Dimungkinkan untuk membuat model Anda sendiriiya
Dimungkinkan untuk membuat model Anda sendiri melalui UIiya
Model dapat berisi tautan ke model lain.iya
Dimungkinkan untuk menggabungkan tautan (misalnya, model dapat menautkan ke salah satu dari dua model)ya, menggunakan jenis repeater
Dimungkinkan untuk membuat model bersarang (misalnya, suatu objek berisi objek lain)iya
Dimungkinkan untuk menggabungkan model (misalnya, bidang dapat berupa string atau angka)ya, menggunakan jenis repeater
Dimungkinkan untuk menentukan berapa banyak entitas konten yang dapat dibuat berdasarkan model tertentutidak, hanya dimungkinkan untuk membuat model tunggal
Mengelola konflik yang terdeteksi antara model dan entitas konten (misalnya, jika Anda mengubah model sehingga entitas konten yang ada tidak memenuhi perubahan ini, apakah sistem mampu menyelesaikan situasi seperti itu?)tidak
Baca API untuk Entitas Konteniya
Ceate, perbarui, hapus API untuk entitas konteniya
API CRUD untuk modelbaca dan perbarui saja
API mendukung token aksesiya
Diferensiasi hak akses ke API dengan token akses APIya, melalui pengaturan permssions koleksi
Sistem Penerbitan: Draft / Publikasikantidak
Kemampuan Penerbitan Tertundatidak
Memperbaiki Versi Modeltidak
Versi Entitas Konten yang Berkomitmeniya
Sistem versi seperti Gittidak
Manajemen proyektidak, tetapi Anda dapat menggunakan instance cms yang terpisah
Manajemen gambariya
Manajemen fileiya
Situs webiya
Manajemen penggunaiya
Kontrol Akses Penggunaya, melalui konfigurasi grup
Informasi tambahanSolusi open source yang layak. Beberapa pengaturan dikonfigurasikan melalui konfigurasi, dan bukan melalui antarmuka. , repeater, JSON. PHP.

Cosmic JS


Situscosmicjs.com
DeskripsiModern 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
, , . Yaitu -> .
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


Situsdirectus.io
DeskripsiPremium 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


Situskenticocloud.com
DeskripsiStop 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


Situsnetlifycms.org
DeskripsiOpen 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


Situsprismic.io
DeskripsiOne 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


Situsghost.org
DeskripsiGhost 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
Informasi tambahanProyek ini tumbuh dari wordpress, alat editing yang kuat.


Kesimpulan


Pada umumnya, dari cm tanpa kepala saya berharap melihat dua hal utama: kebebasan dalam membuat model, berkat itu Anda dapat mengimplementasikan protokol apa pun, dan menggunakan sistem kontrol versi yang sama sehingga semua perubahan dapat dikelola secara transparan.
Dan sedikit kekecewaan menunggu saya. Meskipun Anda dapat bekerja dengan sebagian besar sistem ini, mereka memiliki sejumlah kelemahan yang tidak menyenangkan bagi saya. Ini, tentu saja, tidak berarti bahwa sistemnya buruk, itu hanya berarti bahwa mereka tidak memenuhi harapan saya, dan harapan saya adalah masalah saya. Saya akan menyuarakan mereka:
  • 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.

Sayangnya, ketika saya bekerja di perusahaan publik itu, kami tidak dapat mengambil salah satu dari sistem ini. Cloud CMS paling cocok untuk kebutuhan kita, tetapi harga itu menggigit.

Kesimpulan


Begitulah analisis ini membuat saya berpikir bahwa saya perlu menulis cms tanpa kepala saya. Anda sudah melihatnya, pada contohnya, ada demonstrasi solusi untuk masalah. Ini disebut Any JSON CMS .

PEMBARUAN: Setiap JSON CMS telah menjadi solusi open source, repositori github ada di sini .

Tujuan utamanya adalah untuk memberikan kebebasan dalam menciptakan model rumit yang sewenang-wenang dan mengendalikan semua perubahan menggunakan sistem mirip-git. Sekarang jauh dari semua yang ingin saya terapkan, itu sudah memiliki "pesan" utama.

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


All Articles