This is a reference implementation of Uncle Bob's clean architecture for Android, structured into distinct domain, data, and presentation layers. The project demonstrates how to organize an Android application around business use cases, keeping domain logic and entities free from framework dependencies.
The architecture enforces dependency inversion through layered separation, where inner domain layers define interfaces that outer layers implement. This approach enables repository abstractions for data source switching, presenter-view separation for testable UI logic, and use-case composition for handling complex business scenarios while maintaining single-responsibility boundaries.
The implementation supports testing each layer in isolation, with unit tests for domain and data layers that run without an emulator, and acceptance tests for the presentation layer. The project serves as a practical guide for structuring Android applications with clean architecture principles.