İçeriğe geç
Cervus Core
Web Geliştirme

Bu siteyi neden statik + MDX olarak kurdum

· 2 dk okuma

  • nextjs
  • mdx
  • mimari
MDX dosyasından statik HTML'e derlenme akışını gösteren basit bir diyagram.

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 blame ile 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:

  1. Yazı deponun içine girer

    MDX dosyası olarak commit edilir.

  2. Zod şeması doğrular

    Eksik ya da hatalı bir alan derlemeyi kırar.

  3. 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ında

Yorum alanı henüz aktif değil; GitHub Discussions tabanlı bir sistem hazırlanıyor.

Bülten

Yakında

Yeni 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.