Kembali ke Blog

Astro Content Collections: Cara Kelola Konten Tanpa Database

#astro#webdev#cms
Astro Content Collections: Cara Kelola Konten Tanpa Database

Waktu saya bangun ulang situs ini pakai Astro — migrasi dari CMS Laravel yang lama, lengkap sama Postgres dan Docker-nya — salah satu fitur yang paling bikin saya lega adalah Content Collections. Ini yang bikin blog dan portfolio saya bisa jalan tanpa database sama sekali. Semua konten cukup jadi file Markdown di folder src/content/.

Cara kerjanya

Kamu definisikan schema (pakai Zod) buat tiap “koleksi” — di situs ini ada dua, blog dan portfolio — dengan field yang wajib ada (title, description, tanggal publish) dan yang opsional (tags, gambar, video). Astro otomatis validasi setiap file Markdown terhadap schema itu waktu build. Kalau ada field yang salah tipe, atau kurang, build langsung gagal dengan error yang jelas nunjuk file mana dan field apa yang bermasalah. Ini jauh lebih aman dibanding CMS berbasis database yang biasanya nggak punya validasi tipe sekuat itu — di setup lama saya, typo di field tanggal publish itu baru ketauan pas halamannya udah live dan tampilannya berantakan.

Yang bikin ini pas buat kasus saya

Nulis post baru sekarang cuma bikin file .md baru dengan frontmatter yang sesuai, commit, push. Nggak perlu login ke admin panel, nggak ada API call ke backend, nggak ada database yang perlu di-backup atau di-maintain terpisah. Dibanding CMS lama yang butuh saya jaga uptime Postgres-nya sendiri, ini bedanya lumayan jauh — satu hal lebih dikit yang bisa down di tengah malam.

Buat workflow saya yang sering brainstorm konten bareng AI terus edit manual, ini juga pas banget. File Markdown gampang di-generate dan di-edit langsung, baik oleh saya sendiri lewat editor biasa maupun tools AI yang saya pakai buat draft awal — nggak ada lapisan API atau format proprietary yang harus diterjemahin dulu.

Ada satu hal yang harus saya biasain: karena tiap collection punya locale-nya sendiri (id/ dan en/), saya harus disiplin jaga nama file tetap sama persis di kedua folder — komponen language switcher situs ini nge-assume slug-nya identik, bukan nerjemahin path secara otomatis. Sekali saya lupa dan file EN-nya kepisah nama, language switcher-nya langsung 404. Nggak susah dibenerin, tapi itu satu konvensi yang harus dijaga manual, bukan sesuatu yang dipaksa sama sistemnya sendiri.

Kalau kamu lagi bangun blog atau portfolio personal dan nggak butuh fitur CMS yang kompleks — multi-user editing, workflow approval, dan sejenisnya — content collections di Astro layak banget dicoba.