Skip to content

Showcase of multi-modular Android MVVM architectures (Layered Architecture and Clean Architecture) πŸ› to developing clean, testable and scalable Android Apps πŸ“±. MVVM, LiveData, Retrofit, Coroutines, Hilt Dependency Injection, MockK Unit Tests.

License

davidepanidev/android-multimodule-architecture-concepts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Android Multimodule Architecture Concepts

Kotlin License

Android Multimodule Architecture Concepts is a showcase of two MVVM multi-modular concepts (Android Layered Architecture and Android Clean Architecture) πŸ› to developing clean, testable and scalable Android Apps πŸ“±

πŸ”Ž The architecture proposed consist of 3 different layers:

  • Presentation layer: contains all the Android UI framework components (e.g. Activities, Fragments, ViewModels...) and the related resources (e.g. images, strings...).
  • Domain layer: contains the platform-independent business logic and models.
  • Data layer: contains the repositories, the data sources api implementations and the corresponding api-specific models.

These layers are implemented using 3 separate modules to increase decoupling and separation of concerns. The dependencies between the modules are set so that the data layer is completely invisible to the presentation layer and vice versa.

Architecture concepts πŸ›

The project hosts each architecture concept in a separate branch (this main branch only contains an empty template).

πŸ”Ž The proposed concepts are:

  • Layered Architecture Concept: the dependency between the modules is presentation -> domain -> data. The 3 modules are Android modules. The visibility among the modules is shown by the picture below:

  • Clean Architecture Concept: the dependency between the modules is presentation -> domain <- data. The presentation and data modules are Android modules whereas the domain module is a Kotlin library being the innermost platform-independent module. The visibility among the modules is shown by the picture below:

Screenshots πŸ“Έ

The App retrieves data from the CoinGecko API and shows the current most capitalized cryptocurrency (which of course is Bitcoin πŸ˜„).