You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: module_guideline/module_guideline.md
+7-4Lines changed: 7 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -4,15 +4,18 @@
4
4
5
5
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.
6
6
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
+

8
10
9
11
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`)
13
15
- Level 3: POJO classes, not dependent to android (`:common:common-models`, `:trendyol:product-model`)
14
16
- Utilities: Can be used on all levels (`common:base`, `:trendyol:remote`)
15
17
16
18
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.
17
20
18
21
This separation helped us to create modularized by providing clear sight about dependency boundaries.
0 commit comments