For this coding exercise I have implemented the VIPER architecture, which works best for large-scale applications. This architecture separates the application into five distinct layers (view, interactor, presenter, entity, & router), with each layer having its own responsibility. This approach promotes scalability, testability, and maintainability of the application.
To demonstrate robustness and lightweight design, I have used all native frameworks in my application. This approach ensures compatibility with future iOS updates and maximizes performance.
I have created multiple schemes to build multiple apps from one codebase. By leveraging this approach, this enables flexablilty to personalize each app. Simply select a scheme to change clients.
- Search characters
- Download remote image
- Desplays placeholder if returned empty iconUrl
- Portrait and Landscape orientations
- iPhone and iPad support
- Multiple clients in one codebase
- Dark mode