Kişisel Web Sitem
Bu site, bir portfolyodan fazlası: kendi içeriğimi yönetebildiğim, baştan sona kendi yazdığım bir web uygulaması. Hazır bir tema ya da içerik yönetim sistemi kullanmak yerine, ASP.NET Core ile sıfırdan geliştirmeyi tercih ettim — çünkü bir geliştiricinin vitrini, aynı zamanda nasıl kod yazdığının da kanıtı olmalı.
Neden Sıfırdan?
Hazır bir altyapıyla birkaç günde benzer bir görünüm elde edebilirdim. Ancak amacım yalnızca projelerimi listelemek değildi; katmanlı mimariyi, tasarım desenlerini ve performans optimizasyonlarını gerçek bir üründe uçtan uca uygulamaktı. Bu site, öğrendiklerimi anlattığım değil, çalışır halde gösterdiğim yer.
Mimari
Proje, sorumlulukları net biçimde ayrılmış dört katmandan oluşuyor:
| Katman | Sorumluluk |
|---|---|
| EntityLayer | Veritabanı varlıkları ve veri transfer nesneleri |
| DataAccessLayer | Entity Framework Core, Generic Repository, migration'lar |
| BusinessLayer | İş kuralları, servis arayüzleri ve önbellekleme katmanı |
| PresentationLayer | MVC controller'ları, görünümler ve yönetim paneli |
Katmanlar birbirine somut sınıflarla değil arayüzlerle bağlı. Bağımlılıklar Dependency Injection ile çözülüyor; bu sayede bir servisin davranışını değiştirmek, onu kullanan hiçbir kodu düzenlemeyi gerektirmiyor.
Veri Erişimi
Tekrar eden CRUD kodunu ortadan kaldırmak için GenericRepository<T> yapısını kurdum. Veritabanı şeması Code First yaklaşımıyla, migration'lar üzerinden yönetiliyor — şema değişiklikleri de kodun bir parçası ve sürüm kontrolünde.
Yönetim Paneli
Sitedeki tüm içeriği yönettiğim paneli de kendim tasarladım. Ortak bir tasarım sistemi üzerine kurulu: renkler, form alanları, tablolar ve butonlar tek bir stil dosyasından besleniyor, her modül kendi vurgu rengiyle ayrışıyor.
- Proje yönetimi — sürükle-bırak görsel yükleme, HTML destekli açıklama editörü ve yazarken çalışan canlı önizleme
- Görsel yönetimi — her projenin görselleri kendi klasöründe tutulur; tür ve boyut doğrulaması sunucu tarafında yapılır
- İletişim kutusu — gelen mesajları okuma, filtreleme ve panelden doğrudan yanıtlama
- Profil ve CV — biyografi, profil fotoğrafı ve indirilebilir özgeçmiş yönetimi
Panel, telefonda da eksiksiz çalışacak şekilde tasarlandı; kenar menüsü küçük ekranlarda katlanıyor ve tüm formlar tek sütuna iniyor.
SEO Altyapısı
Arama motoru görünürlüğünü sonradan eklenen bir detay değil, mimarinin parçası olarak ele aldım.
- Anlamlı adresler — proje sayfaları
/proje/kitap-tavsiye-sistemibiçiminde çalışıyor. Türkçe karakterler adres dostu karşılıklarına dönüştürülüyor. - Kalıcı yönlendirme — eski kimlik tabanlı adresler 301 ile yeni adreslere taşındı, böylece mevcut sıralamalar korundu.
- Yapılandırılmış veri — JSON-LD ile kişi, site, proje ve gezinti bilgileri arama motorlarına makine okunur biçimde sunuluyor.
- Paylaşım etiketleri — her sayfa kendi canonical adresi, Open Graph ve Twitter kartı bilgileriyle geliyor.
- Dinamik site haritası —
sitemap.xmlverobots.txtveritabanındaki güncel içerikten anlık üretiliyor.
Performans
Sık okunan ancak nadiren değişen veriler için Decorator Pattern ile bir önbellekleme katmanı kurdum. Asıl servisler bu katmandan habersiz; önbellek onları sarmalıyor.
Kayıtlar bir saat boyunca bellekte tutuluyor. Bir içerik eklendiğinde veya güncellendiğinde ilgili önbellek anında geçersiz kılınıp tazeleniyor — yani ziyaretçi hiçbir zaman süre dolmasını beklemek zorunda kalmıyor, aynı anda gereksiz veritabanı sorgusu da yapılmıyor.
Önbellek, doğru kurulduğunda görünmezdir: kullanıcı yalnızca hızı fark eder, eskimiş veriyi değil.
İletişim Altyapısı
İletişim formu, gelen mesajı veritabanına kaydediyor ve SMTP üzerinden bana bildirim gönderiyor. Panelden yazdığım yanıtlar hem karşı tarafa e-posta olarak iletiliyor hem de yanıt geçmişine işleniyor — gönderim başarısız olursa hata nedeni de kayıt altına alınıyor. Form ayrıca bot gönderimlerine karşı korumalı.
Kullanılan Teknolojiler
- Arka uç: ASP.NET Core MVC, C#
- Veri: Entity Framework Core, Microsoft SQL Server
- Mimari: Katmanlı mimari, Repository ve Decorator desenleri, Dependency Injection
- Güvenlik: Cookie tabanlı kimlik doğrulama, antiforgery koruması, sunucu taraflı dosya doğrulama
- Ön yüz: HTML5, CSS3, JavaScript, GSAP animasyonları
- Performans: In-Memory Cache, statik dosya önbellekleme
Sürekli Gelişen Bir Proje
Bu site benim için bitmiş bir iş değil, üzerinde denemeler yaptığım canlı bir alan. Yeni bir yaklaşım öğrendiğimde önce burada uyguluyorum.
Görseli yeni sekmede açmak için tıklayın · Kapatmak için ESC