Gazetecilikte sabit bir kural vardır: sayfa basıldığında içerik değişmez. Web'de de benzer bir gelenek var — statik site generation (SSG). Bu blogda da içerik derleme anında HTML'e dönüşüyor; CMS'ten bir kayıt yapıldığında ise ilgili sayfalar anında yeniden üretiliyor.

Neden SSG?

Üç sebep: hız, basitlik ve güvenlik. Sunucuda her istekte render yok; HTML hazır. Veritabanı sadece yorumlar gibi gerçekten dinamik şeylere ayrılıyor. Ve saldırı yüzeyi minimuma iniyor.

MDX: İçerik + Kod

Yazılarımız .mdx dosyaları olarak repoda duruyor. Frontmatter başlığı, kategoriyi ve yazarı tutuyor; gövde ise serbest. Kod blokları vurgulu geliyor:

// lib/posts.ts — her yazı bir dosya
export function getAllPosts(includeDrafts = false): PostListItem[] {
  return listPostFiles()
    .map(parsePost)
    .filter((p) => includeDrafts || !p.meta.draft);
}

Gömülü bileşenler ise işin güzel tarafı. Örneğin bir dosya paylaşmak istediğimizde:

ornek-kod.zip
Zip arşivi · 14.2 KB

Ya da önemli bir uyarıyı kutu içinde vermek istediğimizde:

Revalidation

CMS'te kayıt yapıldığında revalidatePath çağrısı ilgili sayfaları tazeler. Böylece okur her zaman güncel içeriği görür, biz de derleme süresiyle uğraşmayız.

Sonuç: saniyeler altında açılan, arama motorlarının sevdiği, bakımı kolay bir yayın platformu.