The project basically have two screens, in first screen it shows the list of movies and in the second screen it shows the movie details.
Programing language - Kotlin
Libraries - Retrofit - for networking. - Glide - for image loading and caching. - Mockito - for mock web services. - Dagger2 - for dependency injection. - Coroutines for concurrency and multi-threading.
Architecture Components - ViewModel - LiveData - Navigation - View Binding
Project Architecture : Clean Architecture with MVVM also followed SOLID principle.
There are 3 layers in the project -data layer : This layer provides abstract definitions for accessing data sources like a database or the internet. In this case data source is only internet.
-domain layer : This layer contains all the model classes and business logic like GetMovieUseCase
-presentation layer : This layer contains the User Interface-related code. Here MVVM pattern is used.
Design Patterns Used: Singleton -Factory -Repository pattern
UnitTest : jUnit with Mockito is used for unit testing.