Strapi - Headless CMS berbasis node js yang gratis digunakan.
Summary
Strapi adalah headless cms yang populer di kalangan developer yang biasa membuat website, aplikasi yang memiliki banyak platform dan tidak memiliki cukup waktu dan resource untuk membuat backend mereka sendiri. Strapi mempermudah tugas kita, sehingga kita cukup fokus untuk membuat aplikasi yang kita inginkan. Berbeda dengan wordpress yang memiliki semua fungsi didalamnya, mulai dari backend dan frontend.
Apa itu Headless CMS
Berbeda dengan Wordpress, Headless cms tidak mengatur bagaimana kita membuat front end, aplikasi ini hanya berfokus pada backend, dimana kita disediakan dashboard admin untuk mengatur berbagai hal yang berkaitan dengan user, konten dan assets. Tentang bagaimana kita menggunakan konten tersebut, biasanya kita diberikan opsi komunikasi dengan menggunakan Rest API.
Kalian bisa mengetahui daftar Headless CMS yang ada sekarang ini di https://jamstack.org/headless-cms/.
Mengenal Strapi
Strapi adalah CMS (Content Management System) Headless Open Source, dibangun dari 100% Javascript dan digadang-gadang bisa diubah atau di custom sesuai keingingan kita.
Jenis Edisi Strapi
Ada dua jenis edisi strapi, Community Edition & Enterprise Edition.
Versi Strapi dan fitur-fiturnya
Strapi V4 (Stabil)
- Fokus pada keamanan dan Kontrol : Pemisahan API konten dan Admin memungkinkan pengelolaan akses yang lebih baik dengan token API. https://strapi.io/v4
Strapi V5 (Beta)
- Peningkatan management konten : Perombakan total fungsionalitas draf & published dengan tab khusus untuk versi draf dan terbitan
- Versi Konten : Fitur riawat konten yang baru memungkinkan kita untuk melihat dan memulihkan versi konten sebelumnya.
- API Layanan dokumen : menggantikan API layanan entitas, membuka jalan untuk fitur mendatang dan memanfaatkan sistem draf dan published yang ditingkatkan.
- Pembaharuan API : format data respons yang disederhanakan untuk REST dan API GraphQL, dengan dukungan sebagian untuk kueri GraphQL bergaya relay. Banyak komplain karena format Rest API yang dikeluarkan oleh strapi v4 susah untuk digunakan. Terlalu rumit.
Fitur Strapi
Ada beberapa fitur yang mungkin kalian perlu ketahui sebelum memilih strapi sebagai backend atau headless cms kalian.
Multi-databases support
Strapi support beberapa SQL Database, sebelumnya memang support MongoDB, tapi karena strapi yang baru mereka lebih fokus kepada SQL Database seperti :
SQLite
SQLite adalah database yang digunakan untuk aplikasi yang membuatuhkan database yang ringan dan portable. SQLite tidak ideal untuk aplikasi yang cukup besar, maka di aplikasi strapi, biasanya database SQLite dipakai untuk environment development.
MySQL / MariaDB
MySQL adalah database yang sering digunakan oleh kebanyakan orang, database ini mudah disetup dan ada di webhosting. Jadi saran saya, nanti gunakan database ini.
Portgres
Database postgresSQL biasanya menjadi pesaing MySQL, bagi yang faham dengan sistem database ini, silahkan gunakan database ini.
Kalian juga bisa menggunakan database yang berbeda untuk keperluan development dan juga produksi, contohnya saya biasanya hanya menggunakan sqlite saat development, tentunya dengan data dummy. Ketika sudah bisa dijadikan produksi, schema database yang kita buat bisa kita arahkan ke database yang lain seperti MySQL / MariaDB.
GraphQL or RESTful
Ada dua jenis komunikasi API yang disupport secara default, yaitu GraphQL dan RESTful, kita bisa gunakan dengan berbagai jenis client yang support kedua komunikasi tersebut. Mungkin kita bisa menggunakan Javascript framework seperti React, Vue dan Angular, atau mengakses menggunakan aplikasi mobile, IoT, Server dan sebagainya.
100% Javascript
Strapi dibuat dengan 100% javascript, kita perlu menggunakan platform Node.js untuk menjalankan server strapi.
Webhooks
Strapi juga mendukung webhooks untuk keperluan aplikasi kita.
Auto-Generated Documentation
Documentasi tentang API akan otomatis dibuat ketika kita membuat collection, fields dan sebagainya. Tentunya memudahkan kita untuk mencari dokumentasi yang didukung oleh strapi dengan format sesuai dengan konfigurasi yang kita buat.
Authentication & Permissions
Fungsi autentikasi dan permisi disediakan secara default. Kita bisa membuat user dan role langsung di dashboard aplikasi strapi.
Customizable API
Kita bisa mengkustom API untuk mendukung kebutuhan kita, misalnya ada beberapa API yang tidak disediakan oleh sistem strapi secara default. Tapi perlu dicatat, jika kalian mengkustom strapi, maka kalian juga perlu selalu me-maintain kode yang kalian buat.
Multilingual
Fungsi multilingual ada secara default. Fungsinya apa? Contohnya kita ingin membuat website yang memiliki beberapa opsi bahasa, maka kita bisa aktifkan fungsi multilingual agar satu konten / artikel memiliki beberapa versi bahasa, tentunya memudahkan kita untuk menjangkau kalangan / negara tertentu.
Marketplace / Plugins
Ada banyak plugin yang kalian bisa gunakan untuk melengkapi strapi. Ada yang dari official strapi, ada yang dari provider, dan ada juga yang dari perorangan. Kalian perlu cek kembali support plugin yang akan kalian pakai untuk mengurangi masalah di masa depan.
Kekurangan Strapi
Kita tahu no body is perfect, termasuk strapi. Khususnya strapi versi terbaru yaitu versi 4.
Format RESTful API yang sangat susah untuk digunakan
Beberapa waktu lalu saya sudah ingin menggunakan strapi dan mempelajari bagaimana saya menggunakan RESTful API mereka. Ternyata format yang mereka kirimkan dari server sangat susah sekali untuk digunakan, terlalu banyak nested dan tidak intuitif sekali. Banyak yang menyayangkan dengan konfigurasi ini, kalian bisa membaca diskusi github di https://forum.strapi.io/t/discussion-regarding-the-complex-response-structure-for-rest-graphql-developer-experience/13400/3.
Sayang sekali mereka tidak bisa mengubah atau memudahkan format API di versi 4 ini, kemungkinan akan dipertimbangkan di versi selanjutnya.
Memerlukan Server untuk berjalan (Paling tidak)
Jika kalian biasa menggunakan PHP dan Shared Hosting, kemungkinan kalian akan mulai mempelajari bagaimana menggunakan VPS jika kalian ingin menggunakan Strapi sebagai Headless CMS. Khususnya jika ingin menggunakan Strapi sebagai Dynamic Content Server, artinya diperlukan oleh aplikasi untuk berjalan. Jika kalian hanya menggunakan strapi untuk kebutukan aplikasi static, mungkin bisa dijalankan di komputer dan dimatikan ketika website static sudah dibuat.