PayloadCMSNextJSReact JS

Pengalaman Menggunakan PayloadCMS

Pengalaman Menggunakan PayloadCMS

Bismillah.

Awal tahun ini saya berkesempatan diberikan amanah dari perusahaan untuk mengembangkan aplikasi menggunakan PayloadCMS. Awalnya saya merasa aneh dengan PayloadCMS, karena dia memiliki fungsi yang sangat banyak, siap digunakan untuk membuat aplikasi. PayloadCMS sudah memiliki admin panel, sistem auth sendiri, integrasi kepada beberapa layanan yang membuat sangat mudah digunakan, akan tetapi juga sulit untuk dikustomisasi, (bagi saya secara personal ya).

PayloadCMS framework yang dibangun diatas NextJS.

Saya tahu NextJs adalah framework, dia memiliki cara routing sendiri, cara membundle aplikasi sendiri, dan banyak sekali fitur yang membuat mudah developer react dalam membuat aplikasinya. Akan tetapi jika kalian menyadari membuat NextJS tetap harus melakukan beberapa setup, seperti mensetup database, mensetup localization library, mensetup auth library, dan banyak hal yang harus dilakukan. PayloadCMS ini hadir untuk menyederhanakan itu semua. Beberapa developer mungkin menyebutnya dengan "unopinioded" framework. Artinya semua yang berkaitan dengan hal hal yang umum yang harus dilakukan oleh aplikasi sudah di handle oleh PayloadCMS. Jika kalian berasal dari programmer Python, maka mungkin perbandingannya seperti Flask vs Django. Maka dari itu saya menyebut PayloadCMS itu adalah framework yang dibangun di atas NextJS.

Satu konfigurasi yang terpusat.

PayloadCMS memiliki 1 file konfigurasi yaitu payload.config.ts. Dimana pada file itu dia memiliki berbagai macam konfigurasi yang akan digunakan untuk mensetup aplikasi kita. Di sana kita bisa menentukan tipe database kita apa, untuk saat ini paylaod hanya mendukung 3 database yaitu, sqlite, postgresql, dan mongo, bahasa yang kita gunakan, komponen yang kita masukkan kedalam admin panel, table yang akan kita definisikan kedalam aplikasi kita, dan banyak hal. Payload config ini akan dipakai di seluruh aplikasi kita juga untuk melakukan banyak hal, seperti query ke database, ini yang paling sering digunakan, me-render admin panel, ya seluruh halaman admin panel akan dirender sendiri oleh payload, dan banyak hal.

Admin panel yang mudah digunakan sulit untuk dikustom

Ketika kita memulai project dengan menggunakan PayloadCMS, payloadCMS akan secara otomatis meminta untuk membuat user, kemudian, kita bisa menggunakan admin panel yang dibuat oleh PayloadCMS. Kita hanya mendefinisikan table, dan boom! admin panel dengan CRUD yang sangat keren sudah bisa dinikmati. Kita tidak perlu lagi memilikirkan bagaimana tampilan admin panel, validasi setiap form, delete bulk, sort dan searching pada table, bahkan fitur terbaru softdelete sudah tersedia sejak versi 3.59.0. Kita hanya berfokus pada bagaimana frontend memproses data dari database. Akan tetapi ada beberapa kesulitan yang akan dihadapi setelahnya, yaitu kustomisasi dari admin. Contoh yang paling sederhana adalah andaikata kita ingin menambakan icon pada menu navbar admin, maka kita harus mengikuti aturan dari payloadCMS dalam mengkustom komponen. kemudian komponen itu di"register"kan istilahnya kepada payload config dan melakukan importmap (nanti saya akan jelaskan), sederhananya kita harus memberitahu bahwasannya kita ingin meng-injeksi komponen ini kedalam payloadCMS admin control panel.

Saya akan tetap meng-eksplore sampai sejauhmana PayloadCMS ini.

Untuk saaat ini saya akan tetap meng-eksplode sampai sejauh mana performa, kelebihan dan kekurangan payloadCMS ini. Saya sudah memulai meng-aplikasikan payloadCMS ini kedalam projek pribadi saya, seperti blog ini. Sejauh ini tidak ada masalah yang berarti, hanya saja karena dia dibangun di atas NextJS, node_module yang dihasilkan sangat besar, terkadang melebihi 5GB. Ini membuat saya frustasi. Saya akan coba tuliskan setiap pengalaman saya di blog ini, semoga bisa menjadi manfaat untuk orang lain. Aamiin.