Bu sitedeki ürünler, dokümanlar ve bu blog yazısı bir veritabanında değil, depodaki Markdown dosyalarında durur. Yeni bir yazı eklemek, bir .md dosyası eklemek ve yayınlamaktır.
Dosya yapısı
Her dosyanın başında YAML ile yazılmış bir front matter bölümü, altında ise Markdown gövdesi bulunur:
---
title: Yazı başlığı
slug: yazi-adresi
summary: Kısa özet
tags: [Mimari]
---
Başlık, adres ve özet gibi yapılandırılmış alanlar front matter'dan, uzun metin ise Markdown'dan gelir.
Okuma ve önbellek
Uygulama açılırken dosyaları okur, Markdown'ı HTML'e çevirir ve bellekte tutar. Geliştirme sırasında dosya değişince içerik otomatik yenilenir; canlıda içerik uygulamayla birlikte yayınlanır.
Açılışta doğrulama
İçeriğin bozuk olması çalışma zamanında ortaya çıkarsa ziyaretçi hata sayfası görür. Bunu önlemek için içerik açılışta doğrulanır:
- Zorunlu alanlar (başlık, adres, özet, SEO açıklaması) dolu mu?
- Adresler benzersiz ve geçerli mi?
- Ürün ekranlarındaki tabloların satır ve sütun sayıları uyuşuyor mu?
- Doküman içindeki iç bağlantılar var olan sayfalara gidiyor mu?
Aynı kontroller testlerde de çalışır; hatalı içerik yayına çıkmadan derleme aşamasında yakalanır.
Arama
Arama için ayrı bir sunucu kurmadık. Uygulama açılışında tüm içerikten bellek içi bir indeks kurulur. Türkçe karakterden bağımsız arama (ör. "guvenlik" yazınca "güvenlik" sayfalarının bulunması) için metinler normalize edilir. Doküman ve blog boyutundaki içerik için bu yeterlidir.
Artıları ve eksileri
Artıları
- Sürüm kontrolü: her içerik değişikliği bir commit'tir, geri alınabilir.
- Veritabanı, yedekleme ve yönetim paneli gerekmez; saldırı yüzeyi küçülür.
- İçerik ve kod aynı depoda olduğundan yayın tek adımdır.
Eksileri
- İçeriği düzenleyen kişinin dosya ve Git ile rahat olması gerekir.
- Yorum, kullanıcı girişi gibi dinamik özellikler için ayrı çözüm şarttır.
- İçerik çok büyürse bellek içi yaklaşım yetmeyebilir; o noktada gerçek bir arama motoruna geçilir.
Sonuç
Mühendislik vitrini niteliğindeki bir sitede içerik ritmi yüksek değildir, sürümlenebilirlik ise değerlidir. Markdown ile ASP.NET Core Razor Pages bu denge için küçük ve bakımı kolay bir çözüm sundu. Ürünlerimizi ürünler sayfasında, doküman yapısını ise dokümantasyon bölümünde görebilirsiniz.