Skip to content

Commit ea0e58d

Browse files
bilgehan.kalkanbilgehan.kalkan
authored andcommitted
Update module_guideline.md
1 parent 065d423 commit ea0e58d

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

module_guideline/module-levels.png

222 KB
Loading

module_guideline/module_guideline.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44

55
Each module has different content. There are some modules that contain only data classes or only domain or all architectural layers to create a feature.
66

7-
We decided to create arbitrary concept that is called **module level**. Every time when we mention *level* keyword we refer to our concept not the architectural level. These are similar but different on some points.
7+
We decided to create arbitrary concept that is called **module level**. Every time when we mention *level* keyword we refer to our concept not the architectural level. These are similar but different on some points.
8+
9+
![Levels chart](module-levels.png)
810

911
There are total 5 levels on our concept:
10-
- Level 0: `:app` module.
11-
- Level 1: Navigable via deep link (`:trendyol:authentication`, `:trendyol:elite`)
12-
- Level 2: Reusable domain specific features (`:common:widget`, `:dolap-lite:checkout`, `trendyol:vertical-product-cart-view`)
12+
- Level 0: `:app` module
13+
- Level 1: Navigable via deep link (`:trendyol:authentication`, `:trendyol:elite`, `:trendyol:filter-ui`)
14+
- Level 2: Reusable domain specific features (`:common:widget`, `:common:checkout-domain`, `:trendyol:vertical-product-cart-view`)
1315
- Level 3: POJO classes, not dependent to android (`:common:common-models`, `:trendyol:product-model`)
1416
- Utilities: Can be used on all levels (`common:base`, `:trendyol:remote`)
1517

1618
Lower level modules(eg `:common:common-models`) can be used by higher level modules(eg `:trendyol:authentication`) or in its level if not creating circular dependency.
19+
Level of a module is determined by its highest architectural level. For example `:trendyol:elite` has all 3 layers(ui, domain and data) and it's a level 1 but `:trendyol:filter-ui` has only ui layer but it's also a level 1 module.
1720

1821
This separation helped us to create modularized by providing clear sight about dependency boundaries.

0 commit comments

Comments
 (0)