This Android project is a simple application that showcases information about various movies. The data is dynamically sourced from the TMDB API cinema platform.
The app features multiple screens across different modules:
- Movie List Screen: Displays a list of movies.
- Movie Detail Screen: Shows detailed information about the selected movie.
- Search Screen: Displays movies found through the search engine.
- Favorites Screen: Lists movies the user saved to watch.
- Settings Screen: Provides access to the app's settings menu.
There are a few ways to open this project.
Android Studio
->File
->New
->Project from Version control
->Git
- Enter
https://github.com/amiqyolo/Submission-Final-MADE-Dicoding.git
into URL field and pressClone
button
- Run
git clone https://github.com/amiqyolo/Submission-Final-MADE-Dicoding.git
command to clone the project - Open
Android Studio
and selectFile | Open...
from the menu. Select the cloned directory and pressOpen
button
First, obtain the data is dynamically sourced from The Movie Database API. Register on TMDB to get your API key from your account settings page. To get the certificate key, you can use ssllabs.com/ssltest and copy the key from each certificate in the Subject - Pin SHA256
section. Add the key to a file named local.properties
in your project root directory as follows:
HOSTNAME=api.themoviedb.org
BASE_URL=https://api.themoviedb.org/3/
IMAGE_URL=https://image.tmdb.org/t/p/w500
YOUR_API_KEY=*****
YOUR_CERTIFICATE_KEY=*****
Then, replace it in the build.gradle(:core)
:
buildConfigField "String", "HOSTNAME", "\"${properties.getProperty("HOSTNAME")}\""
buildConfigField "String", "BASE_URL", "\"${properties.getProperty("BASE_URL")}\""
buildConfigField "String", "IMAGE_URL", "\"${properties.getProperty("IMAGE_URL")}\""
buildConfigField "String", "API_KEY", "\"${properties.getProperty("YOUR_API_KEY")}\""
buildConfigField "String", "CERTIFICATE_KEY", "\"${properties.getProperty("YOUR_CERTIFICATE_KEY")}\""
Finally, rebuild the project to apply the changes. Remember to update the key reference in the Constants.kt
file in the core
module."
const val HOSTNAME = BuildConfig.HOSTNAME
const val BASE_URL = BuildConfig.BASE_URL
const val API_KEY = BuildConfig.API_KEY
const val IMAGE_URL = BuildConfig.IMAGE_URL
const val CERTIFICATE_KEY = BuildConfig.CERTIFICATE_KEY
This project leverages best practices and popular libraries and tools in the Android ecosystem.
- Clean Architecture
- MVVM Architecture
- Modularization (core module)
- Dynamic Feature
- Dagger2
- RxJava
- Android Jetpack Components
- Retrofit2 + GSON Converter
- OkHttp Logging Interceptor
- Lottie Files
- Shimmer
- Obfuscation Proguard
- Encryption SQLCipher
- Certificate Pinning
- Circle-CI
PRs are welcome :)