Submission 2 MADE (Menjadi Android Developer Expert) in Dicoding Course.
This project is made to fulfill a Submission in Dicoding course and the last course in Android Learning path.
As you can see, this repos have 4 Branch, master, circle-ci-project-setup, submission1, submission2, You can see at Branch submission1 if you want to look at the code, and clone it with DownGit, and the branch master & submission2 is exactly same, because i merged it into branch master from branch submission2, just clone or download it if you want to see the code, thanks.
In this project, I learned many things, such as Clean architecture, Design Pattern, Networking with Retrofit, Reactive Programming with Coroutines Flow, Dependency Injection with Koin, Local Database with Room Persistence, Modularization, Dynamic Feature, Security, Useful Library, Continuous Integration, Performance, and many things.
For the 3rd Party Library i used in this project, you can look here, and for the Tech Stack, i used the MVVM Architecture Pattern, Dependency Injection (DI) with Koin, and so many things that you can see at here.
I Use the TheMovieDatabase for the data source. first thing first, you have to get the API Key from TheMovieDatabase, then, follow the instruction here.
I Hope this Project will help someone, if you feel helped with this project, you can give stars to support me, thank you very much :)
Clone or Download and Open it into Android Studio for Submission 2
https://github.com/Adithya-13/MadeSubmsission.git
You can use the DownGit for download Submission1 separately, Copy this
https://github.com/Adithya-13/MadeSubmsission/tree/submission1
and Paste it into DownGit, after that click Download Button, and voila, you can clone the code.
Change the API_KEY here
class RemoteDataSource(private val apiService: ApiService) {
private val apiKey = "" //REPLACE YOUR API KEY HERE!!
suspend fun getMovies(): Flow<ApiResponse<List<MovieResponse>>> {
....
}
suspend fun getTvShows(): Flow<ApiResponse<List<TvShowResponse>>> {
....
}
}
you can get API_KEY from TheMovieDb
All Movies | All Tv Shows | Detail Movies | Detail Tv Shows |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Search Movies | Search Tv Shows | Favorite Movies | Favorite Tv Shows |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Get All the Movies and Tv Shows
- Search the Movies and Tv Shows
- Favorited Movies and Tv Shows
- Sort the Movies and Tv Shows by: Popularity, Vote, Release Date, and Random
- Share the Movies and Tv Shows to other Application
- MVVM (Model-View-ViewModel) Architecture Pattern
- Modularization (core module)
- Dynamic Feature (favorite module)
- Clean Architecture (data, domain, presentation)
- Dependency Injection with Koin
- Coroutines Flow
- ViewBinding
- Room Persistence
- RawQuery
- Obfuscation with Proguard
- Encryption with SQLCipher
- Certificate Pinning with OkHttp
- Continuous Integration with Circle-CI