This is a sample app that fetches a list of popular, now playing and upcoming movies from The Movie Database (TMDb) API and caches the result in a local database. The app uses pagination to load more pages when user scrolls down the list. When clicking on a specific movie a movie details screen will be shown with more info about the movie.
You must use Gradle JDK 11 to run the project.
This sample app uses MVVM Architecture with clean architecture principles, a well known architecture for Android, the app's components are less dependents and easier to test.
There are only tests for GetMovieDetailsUseCase
, MovieDetailsViewModel
and db testing but I will add other
tests for more classes and also add different kind of testing like UI, integration or mock server
testing.
- Lifecycle & ViewModel.
- Kotlin Coroutines.
- Hilt for dependency injection.
- Retrofit for REST api communication.
- Gson for parsing JSON.
- Jetpack compose for UI.
- Room for local storage.
- Junit & mockito for testing.
The project has an implementation using Jetpack Compose to run it you need to use at least android studio Android Studio Arctic Fox or Bumblebee Canary.
- The project uses toml file to manage dependencies.
- The
minSdkVersion
is 24. - The additional libraries used are Accompanist (Insets & Coil) and the Navigation Component.
- The app theme relays on the Material Theme to model Colors, Shapes, and Typography.
LocalElevations
&LocalImages
are used to associate different Elevations & Images with the app themes.