This is an app i created for accomplish task from Dicoding on subject MADE and i got 4 star of 5 you can see my certificate here, by the way if you found my project because you wanted to accomplish your final task from Dicoding also please use this as reference do not copy all of the code or it'll be counted as Plagiarism
i'm using TMDb API here hence you need to create your own KEY API first to running this code properly, you can visit here to create your account first and go to settings click to API here
- create new file secrets.properties
- in secrets.properties create variable API_KEY
- place your API_KEY -> API_KEY = "{Your API KEY}"
- Movie Now Playing : /movie/now_playing
- Detail Movie : /movie/{movie_id}
- TV on Airing : /tv/on_the_air
- Detail TV : /tv/{tv_id}
- Search : /search/multi
Implementing Continuous Integration
- You are Free to use (CircleCI,Github Action,TravisCI,etc) choose one
- do a test and build APK successfully without any issue or get label pass for your CI project
Have a Good Performance
- Implementing Leak Canary without any memory leaks while analyzing
- No issue refers to performance while inspect code
Have a Security
- Implementing obfuscation with ProGuard
- Implementing encryption for database
- Implementing certificate pinning fro connection to server
Create 3 Main Feature
- You Free to decide what's Themes or APIs you use
- There are must have page list item page, detail item, and list favorite (use it database)
- All Feature can work properly without any force close
Implementing Modularization
- Create 1 Android Library for core and 1 dynamic feature for favorite
Implementing Clean Architecture
- Not Violate Dependency rule and Clean Architecture
- Separating model for domain with model for data (separation model)
Implementing Dependency Injection
- Must use library Dependency Injection like: Dagger/Hilt/Koin/Kodein (Choose One)
- Implementing Injection correctly for all Functionality
Implementing Reactive Programming
- You can use Rx/Flow (Choose one)
- Implement properly to retrieve data from network and database
- Lifecycle & LiveData
- Navigation Component
- Dagger Hilt
- Retrofit 2
- Glide
- MVVM
- ROOM
- Smooth Loader
- View Binding
- Paging3 -ViewPager2
- Kotlin Coroutines Flow
- Truth
- Flow
- Clean Architecture MVVM
- Secrets Gradle
- Lottie
- Circle CI
- LeakCanary
Main Page
In Main Page just to display both list Movie and Series. i'm using ViewPager2 to split them and to make user easily can navigate between movie and series just by swiping to the left or right in here too i'm using TabLayout so user can know what's tab opened now
Detail Page
here just to display all information about the movies or series user click from main page and from this page user can mark that movie or series as favorite and can easy to find the movie/series which has mark favorite
Favorite Page
This page have 2 page like main page i use ViewPager2 and TabLayout to split both of them to make user can easily find their favorite movie or series
Search Page
This the page for user to find movie or series they want to find out