Bu siteyi neden statik + MDX olarak kurdum
· 2 dk okuma
- nextjs
- mdx
- mimari
Bu siteyi kurarken ilk karar verdiğim şey bir içerik yönetim paneli kullanmamaktı. Kararı nasıl verdiğimi ve neden pişman olmadığımı anlatayım.
Sorduğum soru
Bir blog, bir portfolyo ve ücretsiz dersler barındıran bir site kuracaktım. İlk dürtü genelde "bir CMS kur, yazıları oradan yönet" olur. Ben tam tersini sordum: gerçekten bir veritabanına ihtiyacım var mı, yoksa yalnızca metin düzenlemek için bir arayüze mi alışmışım?
Cevap net çıktı: kullanıcı hesabı yok, ödeme yok, yorum formu bile işlevsel değil. Tek ihtiyacım, yazdığım metni bir sayfaya dönüştürmekti.
Neden MDX
MDX, düz metne React bileşeni gömebildiğim için Markdown'dan bir adım ötede duruyor. Frontmatter'ı Zod ile doğrulayınca eksik bir alan (kısa bir açıklama, yanlış tarih biçimi) derleme anında hata veriyor — yayına çıkmadan önce yakalanıyor:
export const postFrontmatterSchema = baseFrontmatter.extend({
category: postCategorySchema,
tags: z.array(slugSchema).min(1).max(6),
});
Bu, dosya sisteminden okunan düz metnin veritabanındaki bir kayıttan daha kırılgan olmadığı anlamına geliyor; yalnızca farklı bir yerde duruyor.
MDX'i CMS ile karşılaştırınca
Karar verirken kendime sorduğum üç ölçüt şöyle sıralandı:
| Ölçüt | Geleneksel CMS | Depoda MDX |
| ---------------------- | ---------------- | -------------------- |
| Sürüm geçmişi | Ayrı bir özellik | git log ile bedava |
| Yayın öncesi doğrulama | Çalışma anında | Derleme anında |
| Çalışan sunucu | Gerekli | Gerekmiyor |
Üçü de aynı yöne işaret etti: bir yazının nasıl yayınlanacağını, çalışma anında değil derleme anında belirlemek istiyordum.
Ne kazandım
- Git geçmişi. Bir yazının hangi cümlesinin ne zaman değiştiği
git blameile görülüyor; bir CMS'in revizyon geçmişine güvenmiyorum. - Sıfır çalışan sunucu. İçerik derleme sırasında HTML'e dönüşüyor; içerik okuma anında hiçbir veritabanı sorgusu çalışmıyor.
- Tek doğrulama noktası. Şema tek dosyada durduğu için yeni bir içerik türü eklemek "bir tabloya sütun eklemek" değil, birkaç satırlık bir Zod şeması yazmak.
Bu üç kazancın hepsi aynı akıştan geliyor:
Yazı deponun içine girer
MDX dosyası olarak commit edilir.
Zod şeması doğrular
Eksik ya da hatalı bir alan derlemeyi kırar.
Derleme anında HTML'e döner
Çalışma anında hiçbir sorgu çalışmaz.
Ne kaybettim
Dürüst olmak gerekirse: zengin metin editörü rahatlığı. Bir görsel
sürükleyip bırakamıyorum; dosya adını ve alt metnini elle yazıyorum. Bu
benim için kabul edilebilir bir bedel — ama herkes için olmayabilir.
Bu kararın somut çıktısı, okuduğunuz bu sitenin kendisi — kaynak kodu ve kalite kapıları hakkında daha fazlasını nasıl çalıştığım sayfasında bulabilirsiniz.
Abdullah Balat
Kurucu ve geliştirici
Bu siteyi kuran, tasarlayan ve içeriğini yazan kişiyim. Hakkımda daha fazlası →
Yorumlar
YakındaYorum alanı henüz aktif değil; GitHub Discussions tabanlı bir sistem hazırlanıyor.
Bülten
YakındaYeni yazı ve ders yayınlandığında haber vermek için bir bülten hazırlıyorum. Kayıt formu şu an pasif; aktif olduğunda burada duyurulacak.