A modern Android application that displays a list of movies fetched from TMDb API, built using Kotlin, MVI architecture, and modern Android libraries.
- Displays a list of movies with poster, title, and release date.
- Toggle between vertical list and grid layout.
- Supports pagination using Paging 3.
- Reflects favorite state synced with local storage.
- Users can mark/unmark a movie as a favorite.
- Favorites are stored locally using Room.
- Favorite status is shown directly in the home list.
- Clicking a movie navigates to a details screen.
- Displays:
- Overview
- Genres
- Runtime
- Other useful metadata
- Preserves scroll position when returning to the home list.
- MVI architecture pattern.
- XML-based layouts.
- Kotlin Coroutines + Flow for async tasks.
- Paging 3 for list loading.
- Room for local data storage.
- Hilt for dependency injection.
- Navigation Components with single activity architecture.
- Users can view previously loaded data and favorites while offline.
- supports light and dark themes.
To run this app on your local machine:
-
Get a free API key from TMDb.
-
Open your
local.properties
file in the project root and add the following:API_KEY=your_api_key_here
- Support for different UI configurations (e.g., landscape mode, tablets).
- Add more metadata to the Movie Details Screen.
- Refactor Movie Details Screen to use the MVI pattern for consistency.
- Add unit tests for ViewModels and business logic.
- Add UI tests for critical user flows.