Skip to content
This repository has been archived by the owner on Jan 13, 2023. It is now read-only.

ydhnwb/android-clean-architecture

Repository files navigation

android-clean-architecture

A clean architecture example. Using Kotlin Flow, Retrofit and Dagger Hilt, etc.

Intro

Architecture means the overall design of the project. It’s the organization of the code into classes or files or components or modules. And it’s how all these groups of code relate to each other. The architecture defines where the application performs its core functionality and how that functionality interacts with things like the database and the user interface.

Clean architecture refers to organizing the project so that it’s easy to understand and easy to change as the project grows. This doesn’t happen by chance. It takes intentional planning.

Reference

  • If you want a db cache using room db, go here
  • This android app using backend from this repo
  • If you want tutorial how to create this app step by step, go to this youtube playlist.

Screenshots

Notes

I created this app just for example how to implement clean architecture on android. It really biased to my preference and experience. Also, clean architecture is not mandatory to do. If you feel that you/your team are taking so much benefit by implementing this design pattern, then go for it. Otherwise, don't use it or just modify to you/your team preferences. This app have little bug. If you go from FragmentA to FragmentB, then go back, the fragmentA re render again. I Know how to fix it but I dont have time to do it. Search for "retain fragment jetpack navigation", use the newest solution

Main Picture

There are 3 layer in this app.

Presentation Layer Domain Layer Data Layer
your ui/view entity data source, dto
your viewmodel usecase repository implementation
probably your extension repository interface your library config(retrofit/room)
etc... etc.. etc...

App Level Example

Presentation Layer Something in Between Domain Layer Data Layer Outer data layer
LoginActivity & LoginViewModel <- LoginUseCase -> <- LoginRepository (interface) -> <- LoginRepositoryImplementation DataSource

Releases

No releases published

Packages

No packages published

Languages