Abdeltwab / Flicker-App-MVVM

Flicker app clone Using MVVM + RXSwift
0 stars 0 forks source link

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 Screen Shot 2021-10-06 at 8 34 40 PM Screen Shot 2021-10-06 at 8 36 24 PM

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 :