The goal of this project is showing a modern approach with using the latest technology stack of Android
💫 Powered by TheMovieDb
⚙️ Configuration
In order to use MovieDB:
- You need to get API KEY from TMDb. You can do that by clicking here.
- Once you obtain key, create
secure.properties
which should be on the same level with build.gradle(Project:MovieDb) - Add your key into secure.properties
MOVIE_API_KEY = "xxx"
- Use JDK 11 to build this project.
🌞 Light Mode
🌚 Dark Mode
📦 Modules
Modules are the collection of source files and build settings that allow you to divide your project into discrete units of functionality.
-
App Module
:app
module is an com.android.application, which is needed to create the app bundle. It presents data to a screen and handle user interactions. -
Core Module
:core
module is an com.android.library, contains base classes and resources which are shared between other modules -
Data Module
:data
module is an com.android.library, contains models, api services and repository classes -
Domain Module
:domain
module is an com.android.library, contains use case and mapper classes -
Presentation Module
:presentation
module is an com.android.library, contains business logic and adapter classes -
buildSrc
:buildSrc
is a directory at the project root level which contains build info. It is used for dependency management for better reusability and easy maintenance
🛠 Built With
🗼 Architecture
- Model-View-ViewModel(MVVM) pattern helps to completely separate the business and presentation logic from the UI
Modular app architecture
enables separate functionality into independent, interchangeable modules- SOLID principles intended to make software designs more understandable, flexible, and maintainable
💎 Code style
To maintain the style and quality of the code
Tool | Check command | Fix command |
---|---|---|
ktlint | ./gradlew ktlintCheck |
./gradlew ktlintFormat |
✅ Version Control
Gradle Versions Plugin for checking all dependencies for their current versions.
Run the ./gradlew dependencyUpdates
task. The plugin will create a file named dependency_report.json
under build/reports/dependencyUpdates
directory after completed successfully.