ATG Librarium: Kütüphane Yönetim Sistemi

Ruby on Rails, API Entegrasyonu ve Hiyerarşik Veritabanı Mimarisi

Projenin Amacı ve Kapsamı

Modern ve Ölçeklenebilir Bir Altyapı

iWallet Türkiye'de gönüllü olarak stajımın sonunda; yazılım ve backend becerilerimi geliştirmek ve bu alanlara dair vizyon kazanmak adına, bana verilen projemi geliştirdim. Adına ATG Librarium verdiğim bu projede, akıllı kütüphane yönetim sistemi geliştirirken Rails'in orta-ileri seviye özelliklerini, ilk projelerde öğrendiğim temel Rails konularına ve Ruby yazılım bilgilerine ek olarak, API geliştirme, PDF export ve daha kompleks business logic'ler ile model ilişkileri ve backend yeteneklerinin geliştirilmesi amaçlanmıştır.

Kullanıcı hesaplarının yönetimleri için tasarlanmış modern, ölçeklenebilir bu sistem; içeriğinde kategorize edilmiş kitap, yazar ve kategorileri bulunduran bir ana sayfayla kitapların ödünç alınıp iade edildiği, ödünç istatistiğinin PDF çıktısının alınabildiği, yaklaşan ödünçlerin bilgisinin mail ile alındığı ve buna ölçekli ceza puanı sistemini barındıran uçtan uca bir çözümdür.

Proje geliştirme süreçleri; Linux tabanlı Ubuntu işletim sistemi üzerinde, Visual Studio Code ve Ubuntu terminalleri aktif olarak kullanılarak tamamen localhost (yerel sunucu) ortamında gerçekleştirilmiştir.

Kullanılan Teknolojiler (Tech Stack)

  • Backend & Çekirdek: Ruby on Rails, API Entegrasyonları, PostgreSQL Veritabanı.
  • Frontend (Arayüz): HAML (HTML Abstraction Markup Language) ve TailwindCSS ile modern stil mimarisi.
  • Oturum & Yetkilendirme: Devise gemi entegrasyonu.
  • Dinamik Raporlama: WickedPDF gemi ile dinamik PDF oluşturma ve export işlemleri.

Kullanıcı Rolleri ve Hiyerarşik Sistem

3 Etkin Rol Modeli (Authorization)

Kullanıcı siteyi açtığında ana sayfa üzerinden listelere gidip erişebilir, ancak işlem yapması için üye olarak giriş yapması ya da yeni oturum açması gerekmektedir. Sitede Member, Librarian ve Admin olmak üzere 3 etkin rol ve hiyerarşik sistem bulunmaktadır. Geçersiz yetki erişimlerinde kullanıcılar otomatik olarak 'You are not authorized' uyarısıyla karşılaşmaktadır.

  • Member (Üye): Üye olarak giriş yapan herkes otomatik olarak bu statüye erişir. Kitap ödünç alıp iade edebilir, yorum-yıldız atıp silebilir ve sadece kendisine ait hesap hareketlerinin PDF çıktısını alabilir.
  • Librarian (Kütüphaneci): Kitap, yazar ve kategorileri düzenleyip ekleme yetkisine sahiptir. Sistemdeki tüm kullanıcıların ödünçlerini görüntüleyebilir ve genel raporların çıktılarını kontrol edebilir.
  • Admin (Yönetici): Librarian rolünün tüm yetkilerine ek olarak, sistemdeki nesneleri (kullanıcılar, yorumlar vb.) tamamen silebilme yetkisine sahiptir. Ayrıca arka planda gerçekleşen e-posta akışını (Development Mail Preview) denetleyebilir.

Backend Yetenekleri ve Operasyonlar

Sistemin işleyişine ve mekanizmasına ağırlık verilmiş, tasarım ise HAML ve TailwindCSS ikilisiyle temiz tutulmuştur. Geliştirilen temel backend operasyonları şunlardır:

  • Oturum açma, kayıt olma, 'şifremi unuttum' gibi tüm üyelik işlemleri Devise gemi kullanılarak yapılmış ve gerekli tüm validasyonlar (veri doğrulama uyarıları) başarıyla oluşturulmuştur.
  • Sistem durumu otomatik olarak takip edilir; kullanıcıların ödünç süreleri daraldığında sistem e-posta üzerinden (ActionMailer) bilgilendirme sağlar. İadelerin gecikmesi durumunda, kullanıcıların profillerine yansıyan ölçekli bir Ceza Puanı (Penalty Score) algoritması tetiklenir.
  • Projede üçüncü parti uygulamaların veya mobil platformların veritabanına erişebilmesi için API endpoint'leri geliştirilmiş ve veri iletim zemini (JSON mimarisi) hazırlanmıştır.

Arayüz ve Sistem İncelemesi

Aşağıdaki ekran görüntüleri üzerinden HAML ve TailwindCSS ile tasarlanmış sistem arayüzünü, rol bazlı PDF çıktılarını ve veri listeleme (grid) yapılarını inceleyebilirsiniz. Görselleri tam ekran büyütmek ve slayt modunda gezmek için üzerlerine tıklamanız yeterlidir.

Ana Sayfa ve İstatistikler 1. Dashboard (Genel İstatistikler)
Admin Yönetim Paneli 2. Admin Paneli ve 'Dev Mailbox' Yetkisi
Üye Profili ve Ceza Puanı 3. Profil Arayüzü, Ödünç Durumu ve Penalty Score
Kitap Detayı ve Yorumlar 4. Kitap Detayı ve Dinamik Yorum (Review) Sistemi
Kategori Listesi ve CRUD İşlemleri 5. Kategori Yönetimi (Librarian Yetkisi)
Kitap Listeleme ve Dinamik Filtreleme 6. Gelişmiş Filtreleme Arayüzü ve Stok Takibi
Kitap Düzenleme Formu 7. Kayıt Düzenleme (Edit) Formu
Devise Kayıt (Sign Up) Formu 8. Kullanıcı Kayıt (Devise Sign-up) Ekranı
Devise Giriş (Log In) Formu 9. Kullanıcı Giriş (Devise Log-in) Ekranı
LetterOpenerWeb E-posta Test Ekranı 10. Arka Plan E-Posta Test Ekranı (LetterOpenerWeb)
You are not authorized Validasyonu 11. Rol Bazlı Yetkisiz Erişim Uyarısı
İletişim ve Hakkında 12. About (Hakkında) Sayfası
Üye Hesap Çıktısı PDF 13. Sadece Kendi İşlemlerini Gören Üye PDF Çıktısı
Admin Tüm Kullanıcı Çıktısı PDF 14. Tüm Veritabanını Dışa Aktaran Admin PDF Çıktısı

Geliştirici Notu

Yazılım Dinamiklerine Giriş ve E-Dergi Hedefi

Bu projeyi Linux tabanlı Ubuntu işletim sistemi üzerinde, Ruby dili ile geliştirerek; bir elektrik-elektronik mühendisi adayı olarak yazılım dinamiklerine ve backend operasyonlarına profesyonel anlamda ilk adımımı atmış bulunmaktayım. Localhost (yerel sunucu) üzerinde inşa ettiğim bu kütüphane sistemi, bana veritabanı yönetimi ve model hiyerarşileri konusunda çok değerli tecrübeler kazandırdı.

Bu kazanımlar ışığında bir sonraki hedefim; yerel sunucudan gerçek bir canlı sunucuya (production) geçiş yaparak, yöneticisi olduğum Gaziantep Üniversitesi Edebiyat ve Kitap Topluluğu için kapsamlı bir elektronik dergi (e-dergi) platformu geliştirmektir. Benzer backend altyapısını kullanarak ancak bu kez kullanıcı arayüzü (UI) tasarımını çok daha ön planda tutarak; admin, yazar ve okur (üye) rollerinden oluşan, yazarların kendi sayfalarını yönetebildiği ve topluluk kadrolaşmasını dijitalleştiren gerçek dünya projesini hayata geçirmeyi planlıyorum.