This is a take-home challenge written by Abbas SabetiNezhad. To Find out more, read on.
This App uses:
-
RxSwift, RxCocoa, RxRelay: for communicating among Services, Coordinators, ViewModels and ViewControllers
-
RxDataSources: An Rx wrapper for UITableView and UICollectionView DataSource and Delegate, including facilities for Differentiable Data Source for optimizing TableView rendering.
-
RxGesture : a concise way of connecting gestures to Rx Elements
-
Moya : a cleaner approach on defining your network requests
-
Kingfisher : for loading images from urls
-
SnapKit : a clean way of defining constraints in your code
-
CodableWrappers : an amazing way of cleaning your model definitions using property wrappers for encode/decode data
To find out more about how to run the app, see Installation instructions below.
To run the app, you need to clone it and then, use below command in the root folder of project
pod install
And Finally, run the app. As it can be seen from the above screenshots, there is a single tableview with support for pull-to-refresh and Diffable dataSource in the app.
I also have written some UnitTests for the logic parts of the app which is available under a sub project, named TemperTests in the main project.
Abbas SabetiNezhad, [email protected]
Temper is available under the Temper license.