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
- 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 your/your team preferences.
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 |