Hi there, this is my submission of the task.
For this application I have decided to code using Clean Architecture. With less dependency on the framework (Android).
I have used Clean Architecture for this application. My feature set are located inside the feature
folder inside the app module. the core of the application is also defined inside the core
package.
-
common:platform
An Abstraction Layer Over Android's Fragments and Activities, ViewModels and Connectivity Broadcast receiver, with helpful extentions.
-
common:reactive
An Abstraction on Reactive Use Cases and Executors
-
app
The Application features. and the implementations of the previous abstractions. with 2 main submodules
feature
andcore
, the core handles implements the abstractions and the feature implement the individual feature.
For Any Given Feature we have 5 main folders:
- Presentation: Contains the ViewModel and Fragments (UI)
- Domain: Contains the Use Cases
- Data: Contains the Repo
- Network: Contains the Feature's Network Functions
- Data Sources: Contains contracts between repository and data sources.