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 :
- Rxswift for the business and UI layer.
- Callbacks for Networking layer.
- Kingfisher for Image Operations .
- UIKit for Interface .
Search Screen while Loading | Search Screen | Photo Details Screen |
MVVM Design Pattern
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 .
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.
- when navigating pass any thing the. module
PhotoGallery
might need
- when initiating the module , asking it's dependencies
- MVVM + Rxswift used to mange Data flow
example :
1 . bind UI Component in View Controller
- In View Model , Do the Logic to get the Data needed , when get it Emit to the Observable to reflect on the collection View
- Kingfisher is being used for Handling image Downloading and Caching