İçeriğe geç
Soner KESER

Geliştirme·2 dk okuma

Bu siteyi neden sıfırdan yazdım: WordPress'ten Next.js'e

133 spam yorum, 11 ayda 2.004 başarısız giriş denemesi ve on iki eklenti. sonerkeser.com'u neden baştan yazdığımı ve yeni sitenin nasıl çalıştığını anlatıyorum.

Soner KESERFull-Stack Yazılım Geliştirici
Paylaş

sonerkeser.com 2020'de, imkânların kısıtlı olduğu bir dönemde, ücretsiz bir WordPress temasıyla hızlıca kuruldu. İşini gördü; ama yıllar içinde bir sitenin değil, bir bakım yükünün sahibi olduğumu fark ettim.

Eski sitenin karnesi

Yeni siteye geçmeden önce eski sitenin yedeğini açıp veritabanına baktım. Tablo şuydu:

  • 133 yorumun 133'ü spam. Hepsi casino, bahis ve kumar reklamı; hepsi aynı tek blog yazısına, 2025 Eylül'ünden bu yana. Onaylanmış tek bir gerçek yorum yok.
  • 11 ayda 2.004 başarısız giriş denemesi. Saldırganlar kullanıcı adı olarak sitenin adını, e-posta adresinin parçalarını ve "root" gibi klasikleri denemiş.
  • 13.000'i aşkın kaba kuvvet isteği güvenlik eklentisi tarafından engellenmiş.
  • On iki eklenti — hiç kullanılmayan bir e-ticaret eklentisi dahil. Her biri ayrı bir güncelleme, ayrı bir saldırı yüzeyi.

Kısacası site, ziyaretçilerden çok botlara hizmet ediyordu.

Yeni yapı

Yeni site, son aylarda işletmeler için kurduğum sitelerle aynı temel üzerinde: Next.js 16 (React 19, sunucu bileşenleri), SQLite ve tek bir Node.js süreci. Sayfalar derleme anında hazır HTML'e dönüşür; panelden bir şey değiştirdiğimde yalnızca ilgili sayfalar yeniden üretilir. Bütün site tek bir veritabanı dosyası: yedeklemek, bir dosyayı kopyalamak kadar kolay.

  • Yorum yok. Spam'in geldiği kapı tamamen kapandı. İletişim için tek bir form var.
  • Katmanlı spam koruması: görünmez reCAPTCHA v3, botların doldurduğu gizli bir alan (bal küpü), çok hızlı gönderimleri yakalayan zaman tuzağı, IP başına hız sınırı ve içerik sinyalleri. Şüpheli mesajlar silinmez; panelde ayrı bir kutuya düşer, gerçek bir mesaj yanlışlıkla kaybolmaz.
  • Kendi ziyaretçi analitiği. Ziyaretler sunucu tarafında, çerez kullanmadan kaydedilir; botlar ayrılır. Google Analytics yalnızca çerez onayından sonra yüklenir. Yaklaşımı çerezsiz ziyaretçi analitiği yazısında ayrıntılı anlattım.
  • Kendi yazı tipleri. Fontlar bu sunucudan verilir ve Türkçe'nin ihtiyaç duyduğu karakterlere göre kırpılır; ziyaretçinin tarayıcısı açılışta Google'a bağlanmaz.
  • Eski adresler korunur. /about/, /projects/, /contact/ ve proje sayfalarının eski adresleri kalıcı yönlendirmeyle yeni Türkçe adreslere gider.

Ya o prizma?

Manşetteki cam "S", eski logomdaki katlanmış mavi şeridin üç boyutlu hâli. Three.js ile gerçek zamanlı çiziliyor: arkasındaki beyaz ışık camın içinde kırılıp tonlarına ayrılıyor. Malzeme gerçek bir ışık geçirgenliği ve dağılım (dispersion) hesabı yapıyor; fareyi oynattıkça hem cam hem de tayf hareket ediyor.

Fikir basit: tek bir ışık girer, bütün spektrum çıkar. Benim için yazılım da böyle; bir fikri alırım ve web, mobil, masaüstü, gömülü sistem ya da sanal gerçeklik, hangi dalga boyunda gerekiyorsa oraya taşırım.

3B sahne sayfanın asıl içeriğini hiçbir zaman bekletmez: ziyaretçinin ilk hareketinde (masaüstünde fare hareketi, telefonda dokunuş ya da kaydırma) yüklenir. O ana kadar ve "hareketi azalt" tercihinde aynı sahnenin sade bir çizimi görünür. Mobil hız için yaptıklarımı Core Web Vitals rehberinde anlattım.

Sayfa geçişleri ve küçük ayrıntılar

Bir proje kartına tıkladığınızda kartın görseli, tarayıcının View Transitions API'si sayesinde proje sayfasının manşetine dönüşür. Koyu ve açık tema arasında geçiş yaparken ekran, düğmeden yayılan bir daireyle yeniden boyanır. Ctrl + K ile her sayfaya, projeye ve yazıya klavyeden ulaşabilirsiniz.

Sonuç

Eski sitedeki içerik güncellenerek yeni siteye taşındı; üzerine yıllar içinde yaptığım işler, tamamladığım yüksek lisans ve akademik çalışmalar eklendi. Yeni site daha hızlı, daha güvenli ve en önemlisi, bakımı bir yük değil.

#Next.js#WordPress#Güvenlik#Performans#Three.js

Soner KESER — Full-Stack Yazılım Geliştirici. Mobil, masaüstü ve web uygulamaları geliştiriyor; sanal gerçeklik destekli eğitim üzerine çalışıyor. Hakkımda

İlgili yazılar

İletişim

Projenizi birlikte hayata geçirelim

Yeni bir ürün fikri, mevcut bir sistemin yenilenmesi ya da teknik bir danışmanlık ihtiyacı… Kısaca anlatın, en kısa sürede dönüş yapayım.

İletişime geçin