Firebase ve Materialize CSS ile Gerçek Zamanlı Makale Platformu

✨ Proje Özeti ve Temel Teknolojiler

Bu platform, Firebase'in sunduğu **Sunucusuz (Serverless)** mimariyi temel alarak, kullanıcı yönetimi, gerçek zamanlı veri akışı ve gelişmiş performans optimizasyonlarını bir araya getirmektedir. **Materialize CSS** ile modern ve kullanıcı dostu bir arayüz sunulmuştur.

Kullanılan Teknolojiler:

  • Firebase Authentication
  • Firestore Real-Time Database
  • Vanilla JavaScript (Modüler)
  • Materialize CSS

Dinamik Ekran Görüntüleri

Platformun kritik arayüzleri, gerçek zamanlı güncellemeleri ve kullanıcı yönetim ekranları aşağıdaki galeri yapısında incelenebilir. Geçişler **ileri/geri ok tuşları** ile yapılır.


1. Veri Bütünlüğü ve Güvenli Atomik İşlemler

Projenin en kritik teknik yönü, veritabanı işlemlerinde veri tutarlılığını ve güvenliğini sağlamaktır.

Firestore Transaction ile Sıralı ID Garantisi

Rastgele UID yerine, eş zamanlı kayıt durumlarında dahi çakışmayı önleyen, **Firestore Transactions** kullanılarak atomik olarak garanti altına alınan sıralı ve artan ID'ler üretilmiştir. Bu, veritabanı işlemlerinde ileri düzey kontrolü gösterir.

Atomik Görüntüleme Sayacı Yönetimi

Makale görüntülenme sayacı, veri yarışlarını (race conditions) önlemek ve doğru sayım yapmak amacıyla atomik olarak güncellenir. Bu, NoSQL veritabanlarında güvenli sayaç yönetimine hakimiyetimi gösterir.


2. Performans Optimizasyonu ve Kaynak Verimliliği

Uygulamanın hızını artırmayı, Firebase okuma/yazma maliyetlerini düşürmeye odaklanılmıştır.

Kullanıcı Profili Caching (Önbellekleme)

Tekrarlanan Firestore okumalarını önlemek amacıyla, yazar adları ve ID'leri **JavaScript Map** yapısı kullanılarak önbelleğe alınmıştır. Bu, özellikle büyük listelerde sayfa yüklenme süresini ciddi ölçüde azaltır.

Local Storage ile Akıllı Sayaç Kontrolü

Gereksiz veritabanı yazma işlemlerini ve sayacı manipülasyonunu önlemek için, kullanıcının görme geçmişini yöneten bir **`ViewManager` Sınıfı** Local Storage'ı aktif olarak kullanır.


3. İstemci Tarafı Güvenlik ve Robust Hata Yönetimi

Kullanıcı güvenliğini ve kaliteli hata geri bildirimini merkeze alan çözümler üretilmiştir.

Regex ile Güvenli Ön-Validasyon

Şifre gücü (min. 6 karakter) ve email formatı gibi kritik kontroller, sunucuya gönderilmeden önce **Regular Expressions (Regex)** ile istemci tarafında zorunlu tutulmuştur. Bu, API çağrılarını azaltır ve ilk seviye veri temizliğini sağlar.

Merkezi ve Anlamlı Hata Geri Bildirimi

Tüm Firebase hata kodları yakalanır ve tek bir fonksiyon üzerinden, kullanıcıya özel ve anlaşılır mesajlarla sunulur. Bu, tutarlı ve profesyonel bir kullanıcı deneyimi sağlar.

Şifre Değiştirme için Yeniden Kimlik Doğrulama

Hesap güvenliğini artırmak için, şifre değiştirme işleminden önce kullanıcının mevcut şifresiyle yeniden kimlik doğrulaması zorunlu kılınmıştır.


4. Dinamik Kullanıcı Deneyimi (UX) ve Arayüz Detayları

Projenin kullanımını keyifli hale getiren, ince düşünülmüş arayüz etkileşimleridir.

Dinamik Onay ve Gelişmiş DOM Yönetimi

Silme işlemleri için onay modalında, onay butonunun olay dinleyicisi **`cloneNode(true)`** ve **`replaceChild`** gibi Vanilla JS teknikleri kullanılarak dinamik olarak yenilenmiştir. Bu, temiz ve güvenli bir olay delegasyonu becerisidir.

Görsel Geri Bildirim ve CSS Geçişleri

Görüntülenme sayısı güncellendiğinde, sayaç etiketinin arkaplanı anlık olarak renk değiştirir (CSS Transition). Bu küçük görsel ipucu, işlemin başarılı olduğunu kullanıcıya anında bildirir.

Collapsible Açılışında Sayaç Tetikleme

Makale görüntülenme sayacı, sayfa yükleniminde değil, sadece **Materialize Collapsible** elemanı **açılmaya başladığında** tetiklenir, böylece sayımın doğru anı yakalanır.


5. Real-Time Mimarisi ve Oturum Yönetimi

Firebase'in gerçek zamanlı yeteneklerinin ve modern modüler JavaScript mimarisinin kullanımı.

Gerçek Zamanlı Arayüz Senkronizasyonu

Kullanıcının kendi makalelerini listelediği "Makalelerim" modalı, bir veri değişikliği olduğunda (silme/güncelleme) sayfayı yenilemeye gerek kalmadan anlık olarak güncellenir.

Oturum Durumuna Bağlı Dinamik Navigasyon

Navigasyon menüsü, kullanıcının giriş/çıkış durumuna göre anlık olarak değişir ve yalnızca yetkili menü öğelerini gösterir.


Projenin Canlı Ortamını İnceleyin!