/Flicker-App-MVVM

Flicker app clone Using MVVM + RXSwift

Primary LanguageSwift

FlickerApp

Overview

This is a Demo app that utlize Flicker API to search free images and download them. The goal for this app is to practice several iOS topics like :

Tech Stack

  1. Rxswift for the business and UI layer.
  2. Callbacks for Networking layer.
  3. Kingfisher for Image Operations .
  4. UIKit for Interface .

Screens :

Search Screen while Loading Search Screen Photo Details Screen

Architecture Design Patter

MVVM Design Pattern

dataflow

Project Structure

Networking Group

This contain the network layer for the App , in which I tried to follow clean Architecture Principles , so fora each module there is Data and Domain layers. ** Data Layer : is responsible for defining the Models , Endpoints and Service for the feature
** Domain Layer : is responsible for exposing the use cases for the feature into protocols.

Callbacks is used for implementing the API Service and URLSession requests . Screen Shot 2021-10-06 at 8 30 08 PM

Modules Group

This contain the Business and Presentation layer for the App (i.e Screen) , each scree is contained Separately into a Module and decency injection is being used to inject any thing this module would need to work.

Screen Shot 2021-10-06 at 8 33 46 PM

  • when navigating pass any thing the. module PhotoGallery might need

Screen Shot 2021-10-06 at 8 34 40 PM

  • when initiating the module , asking it's dependencies

Screen Shot 2021-10-06 at 8 36 24 PM

Data Flow :

  • MVVM + Rxswift used to mange Data flow

example :

1 . bind UI Component in View Controller

Screen Shot 2021-10-06 at 8 38 39 PM

  1. In View Model , Do the Logic to get the Data needed , when get it Emit to the Observable to reflect on the collection View

Screen Shot 2021-10-06 at 8 40 21 PM

Image Processing :

  • Kingfisher is being used for Handling image Downloading and Caching