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.
- Kendi yazı tipleri. Fontlar derleme sırasında indirilir ve bu sunucudan verilir; 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 renklerine 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 fikir alırım; web, mobil, masaüstü, gömülü sistem ya da sanal gerçeklik, hangi dalga boyunda gerekiyorsa oraya taşırım.
3B sahne sayfa açıldıktan sonra, tarayıcı boşa çıkınca yüklenir; düşük güçlü cihazlarda ve "hareketi azalt" tercihinde sade bir görselle yer değiştirir. Sayfanın asıl içeriği hiçbir zaman ona beklemez.
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 sitenin bütün metinleri yeni sitede duruyor; ü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.
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

