Bu site için sade bir portfolyo ve yazılarımı koyabileceğim bir alan istedim. İçeriği değiştirmek için ayrıca bir yönetim paneliyle uğraşmak istemediğimden yazıları MDX dosyalarında tutuyorum.
Next.js sayfaları oluşturuyor, next-mdx-remote yazıyı render ediyor, Shiki de kod bloklarını renklendiriyor. Yeni yazı eklemek için bir dosya açıp başlık, tarih ve metni yazmam yetiyor.
Geliştirme tarafı
Projede Next.js 15 var ve geliştirme sunucusunu Turbopack ile çalıştırıyorum. Yazıyı veya bir bileşeni değiştirip tarayıcıda bakıyorum. Bu boyutta bir sitede benim için asıl mesele, içerik eklemenin kolay kalması.
Paylaşım görselleri de /og altındaki route'lardan üretiliyor. Böylece her yazı için ayrı bir görsel hazırlamam gerekmiyor.
Görünümde monospace yazı tipini ve yıldızlı bölüm başlıklarını kullandım. Ana sayfada iş, blog ve projeler var. Siteyi büyüttükçe yeni alanlar eklemek mümkün ama şu an yazıyı bulup okumak kolay olsun yeter.
Bir yazı dosyası sayfaya nasıl dönüşüyor?
Bu projede Türkçe yazılar posts/tr, İngilizceler posts/en altında. Aynı yazının iki dildeki dosya adı aynı; örneğin navly-rag.mdx. URL'nin son kısmı da bu dosya adından geliyor.
Dosyanın başında başlık ve tarih gibi bilgiler var:
---
title: "Bir yazının başlığı"
description: "Yazının ne anlattığını söyleyen kısa açıklama."
date: "2026-11-04"
---
Yazının ilk paragrafı.
Bu üst bölüme frontmatter deniyor. Blog listesinde başlık ve tarih için bu bilgiler kullanılıyor; altındaki metin yazı sayfasında gösteriliyor. Bir başlığı değiştirince hem liste hem sayfa başlığı aynı dosyadan güncelleniyor.
MDX, Markdown metninin içinde React bileşenleri de kullanabilmemi sağlıyor. Burada kod blokları ve tablolar için render tarafında bileşenler tanımlı. Yazının içine HTML görünümünü tek tek yerleştirmek yerine bu ortak parçaları kullanıyorum.
Bu düzenin bir sınırı da var: içerik dosya sisteminde. Tarayıcıdan bir form açıp yayın yapmıyorum. Metni değiştirmek kaynak dosyasını değiştirmek demek. Kişisel bir site için bu bana yeterli geliyor; birden fazla editörün çalışacağı bir yayın sistemi olsaydı içerik yönetimini ayrıca düşünürdüm.