Implemented MVVM-C (Coordinator) architecture pattern for the project. Which is satisfying SOLID principples altogether.
Protocol oriented development has been followed.
Project is containing multiple Coordinators to handle specific navigation flow ,
- DashboardCoordinator (handiling flow to Dashboard)
- CharactersListCoordinator (handling flow to Characters list -> DetaiVC)
- EpisodesListCoordinator (handling flow to Episodes list -> DetaiVC)
- QuotesListCoordinator (handling flow to Quotes list)
All coordinators holding an Interactor for specific required protocols to call needed Web-API
Implemented CI/CD Pipeline for both branches (main & master). (note: archieve script has not been written due to not having enrolled myself into developer program)
in .gitlab-ci.yml file archive script is not written but can have a look on separate file- archive.sh
Project contains Cocoapods dependency manager to handle dependencies like,
- Kingfisher (to downloading an image)
- SwiftLint (to improve code quality)
For TDD approach written test cases for ViewModels (couldnn’t affoard much time to it), so code coverage will not be that good. ?
Most of the screen in app, supports Dark and Light theme
- More tests cases to improve code coverage
- Removing storyboards