An example approach for Android Application modularization and Reactive Clean architecture.
This repository is created to demonstrate how to implement modular android application and reactive clean architecture. In Base directory, there are four modules:
- core - core_presentation - core_domain - core_data
Core module contains classes which can be used in every layer such as injection annotations, injection scopes, error factories, data holder models. Core presentation, includes core module and classes which can be used in other features presentation modules such as base ui classes, generic RecyclerView Adapter, ViewModel factories etc. Core data inclues core module and domain spesific interfaces such as Interactors. Core Data also includes core module, data source interfaces, default request interceptors and api module.
All features is implemented as 3 modules which are seperated by their scope.
- feature_presentation - feature_domain - feature_data
Presentation layer, contains, ui classes, injection modules for ui and view entities. Presentation layers includes core_presentation module. Domain layer containes feature spesific domain objects, interactor implementations and repository interace to provide a contract between data and domain layer of feature. Data layer contains core_data module and other data related classes such as repository implementaions, remote local data sources etc..
- Kotlin - MVVM - Clean Architecture - Repository Pattern - RxJava - Dagger2 - Retrofit - Architecture Components - Lifecycle Aware Components - Modularization - Unit Testing - Mockito - Kotlin DSL