This repository contains my solution to the Android take home challenge for an Android Developer role at Carbon. Multi module Android app which showcases Kotlin, MVVM, Navigation, Hilt, Coroutines, Retrofit, Room Database, Unit test and Kotlin Gradle DSL.
The :app
module is an com.android.application, which is the main and default module needed to create the app bundle.
The :core
module is an com.android.library for making network requests. Providing the data source for the features that need it.
The :features
module is an com.android.library which is a module containing a the different features of the app, isolated from the rest in accordance with business logic.
Local unit testing is done for ViewModels.
This application requires a minimum SDK version of 23. Clone the repository. You will need an API key
from The Movie Database to request data. You'll need to create an account one in order to request
an API Key. After you've gotten your API key, in your project's root directory, open the local.properties
file
and include the following line: apiKey = "YOUR API KEY"
. You can now build the project.
- MVVM and clean architecture
- Multi Module
- Hilt for dependency injection
- Retrofit and OkHttp for network call
- Room database for offline caching
- Android Navigation Component and safe args for smooth navigation
- Coroutines to handle network calls
- JUnit and Mockito for unit testing
- Glide for loading images
- Error handling
- Configuration changes