e-Market

The project code is private and prepared for job interviews. Please contact yilmaz.ozcn@gmail.com for the project code

v1 v2

Kullanılan Kütüphaneler

Alamofire: HTTP isteklerini yapmak için kullanılmıştır.

PopupDialog: Kullanıcıya bildirimler göstermek için kullanılmıştır.

Reachability: İnternet bağlantısını kontrol etmek için kullanılmıştır.

Firebase Analytics & Remote Config: Firebase Analytics ile kullanıcı etkileşimlerini takip etmek ve Firebase Remote Config ile dinamik olarak uygulama yapılandırmasını güncellemek için kullanılmıştır.

Mimariler

MVVM & VIPER: Proje, MVVM (Model-View-ViewModel) ve VIPER (View-Interactor-Presenter-Entity-Router) mimarilerini bir araya getirir. MVVM ve VIPER klasörleri içinde, bu mimarilere uygun olarak düzenlenmiş classları bulabilirsiniz. Servis yönetimi, view ve extension classları bu iki mimari için ortaklanmıştır.

Özellikler

AppDelegate Konfigürasyonları: Uygulama başlangıcında mimari yapıyı oluşturmak için gerekli ayarlar AppDelegate üzerinde yapılmıştır.

LaunchScreen Animasyonu: Default LaunchScreen yerine bir storyboard kullanılarak, Lottie Animations kütüphanesi ile animasyon eklenmiştir.

Firebase Remote Config: Uygulama başlangıcında Remote Config üzerinden alınan metin, belirli bir süre sonra ana ekrana geçilmeden önce gösterilmektedir.

Ana Ekran: MainViewController açıldığında, öncelikle Empty View görüntülenir. Kullanıcı, API ile sonuçlanan listeyi görüntüler. Detay ekranı, ilgili ürün seçildiğinde yüklenir.

Kullanıcı Etkileşimleri: Kullanıcının yaptığı işlemler Firebase Log Event yapısı ile Firebase'e kaydedilir.

İnternet Bağlantısı Kontrolü: Reachability kullanılarak, internet bağlantısının olmadığı durumlarda kullanıcıya uygun bir bildirim gösterilir.

API İstekleri: Generic yapı ve Alamofire kullanılarak API istekleri yapılır. MVVM ve VIPER mimarileri için uygun hale getirilmiş ProductService class'ı bulunmaktadır.

Önbellek Yönetimi: Cache Manager yapısı eklenmiş, aynı verinin tekrar çekilmesinin önüne geçilmiştir.

Görsel İndirme: URLSession kullanılarak, ilgili ürünlerin posterleri indirilir.

Modelleme: Kullanılmayan değişkenler için entity oluşturma planı yapılmış, ancak kısıtlı zaman sebebiyle modeller kullanılmıştır.


Used Libraries

Alamofire: Used for making HTTP requests.

PopupDialog: Used to show notifications to the user.

Reachability: Used to check internet connectivity.

Firebase Analytics & Remote Config: Used for tracking user interactions with Firebase Analytics and dynamically updating app configurations with Firebase Remote Config.

Architectures

MVVM & VIPER: The project combines MVVM (Model-View-ViewModel) and VIPER (View-Interactor-Presenter-Entity-Router) architectures. Inside the MVVM and VIPER folders, you can find classes organized according to these architectures. Service management, view, and extension classes are shared between these two architectures.

Features

AppDelegate Configurations: Necessary settings to build the architectural structure are done in the AppDelegate.

LaunchScreen Animation: Instead of the default LaunchScreen, an animation is added using a storyboard and the Lottie Animations library.

Firebase Remote Config: Text fetched from Remote Config at app startup is displayed for a certain period before transitioning to the main screen.

Main Screen: Upon opening the MainViewController, an Empty View is initially displayed. Users can perform product lists using the API, and the results are listed. The detail screen loads when a specific product is selected.

User Interactions: User actions are logged to Firebase using the Firebase Log Event structure.

Internet Connection Control: Reachability is used to show appropriate notifications to the user when there is no internet connection.

API Requests: API requests are made using a generic structure and Alamofire. There is an ProductService class tailored for MVVM and VIPER architectures.

Cache Management: Cache Manager structure is implemented to prevent redundant data fetching.

Image Downloading: Product posters are downloaded using URLSession.

Modeling: Plans were made to create entities for unused variables, but models were used due to limited time.

yilmaz.ozcn