Gradle Management: Defining the module relations - devrath/RunTracer GitHub Wiki

Auth-Module

auth_module

Layers

App layer

  • It has reference to all the modules used in the project.
  • It is like a glue that sticks all modules together.

Core layer

  • The core layer has 3 main module layers and optional components layers.
  • 3 main layers
    • Presentation layer: The presentation layer has 2 sub-modules
      • Presentation-UI
      • Presentation-Design-System
    • Domain layer
      • We will access the domain layer outside many features that we build.
      • We can imagine it is like core-domain is access to domain logic of core module in feature modules.
      • We don't have to access the core-data in any of our feature modules
    • Data layer
      • Here the core data can access the android-device and external sources of services
    • Component layer
      • Here we isolate this layer because it can be changed in the future when we switch the service we are pointing
      • This is kept this way because we can re-use this layer in another project if needed

Feature layer

  • The core layer has 3 main module layers and optional components layers.
  • 3 main layers
    • Presentation layer
      • The presentation layer contains view and view-models.
      • It is connected to the core-domain layer.
      • It is also connected to the domain of the feature.
    • Domain layer
      • It is not connected to any of the feature layers
    • Data layer
      • It is connected to domain-core
      • It is connected to data-core (Try in the future to remove this)
      • Also it is connected to the domain of the feature.
  • Component layers
    • Now the component layer can be a stand-alone layer unique to this feature
    • This is kept this way because we can re-use this layer in another project if needed