Get your own API KEY from TMDB, and put it in buildConfigField inside build.gradle in core module
A simple application applying clean architecture and modularization for fetching and showing Movies from TMDB.
- Fetch and show movies
- Favorite Movies
- Add Favorite Movie
- Delete Favorite Movie
- Setting, Reminder every 2 days
- Presentation Layer, contains UI that are coordinated by ViewModels which execute the use cases.
- Domain Layer, completely pure kotlin module containing entities, use cases, & repository interfaces.
- Data Layer, contains repository implementation with multiple data sources. Repository responsible to coordinate data from different data sources.
- Kotlin, a modern statically typed programming language.
- Kotlin Coroutines
- Flow
- LiveData, an observable data holder.
- ViewModel, class for storing and manage UI-related data in a lifecycle conscious way.
- Room, a persistence library that provides an abstraction layer over SQLite.
- WorkManager, an API that make it easy to schedule reliable, asynchronous tasks that are expected to run.
- Hilt, a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project that's built on top of Dagger
- Retrofit, a type-safe HTTP client for Android and Java
- OkHttp, an HTTP & HTTP/2 client for Android and Java applications
- Gson, a Java serialization/deserialization library to convert Java Objects into JSON and vice versa.
- Glide, a fast and efficient image loading library for Android.
- Shimmer, an Android library that provides an easy way to add a shimmer effect
- Lottie, is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile
- Unit Test
- Database encryption with SQLCipher
- Obfuscation
- Memory leak detection with LeakCanary(See this branch)
- Certificate Pinning