Modularization
Panduan memecah project menjadi module-module yang independen untuk meningkatkan build time, reusability, dan team scalability.
Kapan Perlu Modularization?
| Kriteria | Perlu | Belum Perlu |
|---|---|---|
| Tim > 3 orang | ✅ | — |
| Build time > 2 menit | ✅ | — |
| Shared code antar project | ✅ | — |
| Project kecil, 1-2 developer | — | ✅ |
Module Types
app/ # Application module (entry point)
├── feature-home/ # Feature module
├── feature-profile/ # Feature module
├── feature-auth/ # Feature module
├── core-network/ # Core module (networking)
├── core-database/ # Core module (local storage)
├── core-ui/ # Core module (shared UI components)
├── core-common/ # Core module (utilities, extensions)
└── domain/ # Domain module (entities, use cases)
Rules
- Feature modules tidak boleh depend satu sama lain.
- Feature modules boleh depend ke core dan domain modules.
- Core modules tidak boleh depend ke feature modules.
- Domain module tidak boleh depend ke module lain (kecuali core-common).
Gradual Migration
Tidak perlu modularisasi seluruh project sekaligus. Mulai dengan mengekstrak core-network dan core-ui terlebih dahulu, lalu feature modules secara bertahap.