-
The Movie App is an Android app built using modern tech like Jetpack Compose, TMDB API, Retrofit, and MVI with clean architecture by layer (data - domain - presentation).
-
It allows users to explore movie categories, view detailed information, and add movie to favorite movie list and search on movies in search screen.
-
The app uses pagination by Paging3(RemoteMediator - PagingSource) for smooth data loading and caching the movies in Room Database, ensuring a fast, seamless experience.
- Splash Screen
- Intro Screen
- Home Screen to display Movies by category (Trending - Popular - Top Rated - Upcoming - Discover - Now Playing)
- Details Screen to display movie details
- Search Screen to search for movie
- Favorite Screen to display all movies that is favorite in RoomDb
- Caching movie in RoomDb
- language: Kotlin
- UI layouts using Jetpack Compose
- Multi-screen by navigation compose
- SavedStateHandle
- Coil Compose
- Clean Architecture {presentation - domain - data}
- MVI architecture
- Pagination by Paging3
- RemoteMediator & PagingSource
- Retrofit2 & Gson - construct the REST APIs.
- Flow
- Room Database
- Dependency injection by (Dagger Hilt)
- Coroutines for asynchronous
- Unit Testing
- Mocking (mockk)
The following diagram shows all the modules and how each module interact with one another after. This architecture using a layered software architecture.
- Jetpack Compose: Modern UI toolkit for building native Android UIs.
- TMDB API: Provides access to movies, and cast information.
- Retrofit: Type-safe HTTP client for Android and Java.
- MVI Architecture: Separates UI, business logic, and data management for easy maintainability.
- Dagger-Hilt: Reduces the boilerplate of manual dependency injection.
- Paging 3: Handles large data sets by loading content in chunks.
- Room Database: Local persistence for saving favorite movies.
- Navigation Compose: Handles app navigation in a declarative way.
- Coil: To load image from server to UI.
Thanks for checking out the TMDB Movie App! Don't forget to ⭐ the repository if you find it helpful. 😊
Made with ❤️ by Mohamed Ra'afat