Json – Kitap Kataloğu Projesi
Bu proje, kullanıcıların ürünleri görüntüleyebileceği, favorilerine ekleyebileceği ve kategorilerde gezinebileceği bir ürün katalog uygulaması geliştirmeyi amaçlamaktadır. Uygulama, sağlanan API’yi kullanarak 6 temel ekran tasarımı ve işlevi sunmaktadır. Ekranlar, Figma tasarımına uygun ve responsive olarak geliştirilmiştir.
Proje, şu işlevleri sunar:
- Kullanıcı giriş ve kayıt işlemleri.
- Kategorilere ait ürünlerin listelemesi.
- Ürünlerin detay sayfalarına erişim.
- Favorilere ürün ekleme/çıkarma.
- Arama fonksiyonu.
- 24 Saatlik Cache Yapısı: Ürün verileri için 24 saatlik bir cache yapısı uygulanmıştır.
- Riverpod Kullanımı: Uygulamada veri yönetimi için Riverpod kullanılmaktadır.
- Dependency Injection (DI): Injectable veya benzeri bir Dependency Injection yöntemi kullanılmıştır.
Proje API’sine ait Postman koleksiyonu tarafınıza gönderilmiştir. API kullanımıyla ilgili daha fazla bilgiye Postman koleksiyonunda ulaşabilirsiniz.
- Süre: Splash ekranı 3 saniye boyunca görüntülenir.
- Skip Butonu: Kullanıcı “Skip” butonuna tıklayarak 3 saniyeyi beklemeden ana ekrana yönlendirilebilir.
- E-mail ile giriş: Kullanıcı, e-mail ile giriş yapar ve e-mail doğrulaması yapılır.
- Şifre Validasyonu: Şifre, 6-20 karakter arasında olmalı ve alfanumerik olmalıdır. Validasyonlar, “Giriş Yap” butonuna tıklanarak aktive olur.
- Beni Hatırla: Kullanıcı, “Beni Hatırla” seçeneğini işaretlediğinde, giriş token’ı saklanır ve sonraki girişlerde otomatik olarak kullanılır.
- Kayıt Formu: Kullanıcı, ad, soyad, e-mail adresi ve şifre bilgilerini girerek kayıt olur.
- Validasyonlar: Kayıt formunda, girişteki validasyon kuralları geçerli olacaktır.
- Yönlendirme: Kayıt tamamlandıktan sonra kullanıcı ana sayfaya yönlendirilir, ancak bir sonraki girişte tekrar giriş ekranı ile karşılaşır.
- Kategoriler: API’den çekilen kategorilere ait ürünler liste halinde sunulur.
- Ürün Detayı: Ürüne tıklandığında, ürün detaylarının göründüğü bir ekrana yönlendirilir.
- Kategori Seçimi: Kullanıcı, bir kategoriye tıkladığında o kategoriye ait ürünler listelenir.
- Ürün Detayı: Ürüne tıklandığında, ürünün detayları görüntülenir.
- Ürün Detayı: Seçilen ürünün detayları bu ekranda gösterilir.
- Favoriler: Kullanıcı, ürünleri favorilerine ekleyip çıkarabilir.
- Arama Fonksiyonu: Ekran 4 ve 5’te arama özelliği ile ürünler arasında kolayca arama yapılabilir.
- Frontend: Flutter
- Backend API: RESTful API
- Veri Kaynağı: API’den çekilen veriler
- Validasyonlar: E-mail ve şifre validasyonları
- Veri Yönetimi: Riverpod, Dependency Injection (DI) kullanımı
Projenin veri çekim işlemleri için ürün verilerinin 24 saatlik bir cache sistemi ile yönetilmesi sağlanmıştır. Bu yapı, API’den her defasında veri çekmek yerine, verilerin geçici olarak saklanmasını ve 24 saat boyunca güncel kalmasını sağlar. Bu sayede uygulamanın performansı arttırılır ve API çağrılarının gereksiz yere tekrar edilmesi engellenir.
Proje, Riverpod kütüphanesini kullanarak uygulamanın veri akışını yönetmektedir. Dependency Injection (DI) yöntemiyle, servisler, repository katmanları ve diğer bağımlılıklar kolayca yönetilebilir ve test edilebilir. Injectable
gibi DI yöntemleri kullanılarak kodun modülerliği artırılmıştır.