Hey!, Thank you for giving me the opportunity for this task. Please feel free to ask any question if you have during the code review.
- Unzip files/Clone repo.
- Resolve/Reset Package.
- Build and run.
- Xcode Version 14.1 (14B47b)
- Swift + UIKit with MVVM Architecture.
- AppSetup to startMainScene and Dependency injection.
- ListViewModel Protocol is used to handle ViewModel tasks.
- ListView Protocol to handle View tasks.
- ListViewUIState enum for updating view states.
- DomainToUIMapper for mapping object to CellViewModel.
- Service Protocol to fetch data via Service.
- JSONLoader Protocol to mock DataSource from JSON.
- CellReusableView protocol to fetch cell reuseableIdentifier.
- Pull to Refresh.
- Dependecny Injection.
- Codables.
- Handle errors while loading the json file.
- HTTP protocl for sending request via URLSession.
- Endpoint protocol to implement custom Endpoint class e.g UserEndpoint.
- SOLID Priniciples.
- Unit Testing.
- iPad Support.
- Orientation support (Portrait, Landscape).
- Swift Package Manager.
- SDWebImage for setting imageView.
- Reachability class for checking internet connection before service call.
- Shimmer View.
- Models created from web: "app.quicktype.io/".
- UI testing.
- Dark mode if mandatory.
- Period Selection with action sheet or any other listing menu
*Selection:
LandScape:
Selection Limit Error:
Shimmer:
iPad Support: