ShadowCheckMobile/
├── app/ (Application module)
│ ├── UI (Compose screens)
│ ├── ViewModels
│ └── DI configuration
│
├── domain/ (Business logic module)
│ ├── Use cases
│ ├── Repository interfaces
│ └── Business rules
│
├── data/ (Data access module)
│ ├── Repository implementations
│ ├── Room database
│ ├── Network API
│ └── Data sources
│
└── core/ (Shared module)
├── Domain models
├── Utilities
└── Common interfaces
app → domain → core
app → data → domain → core
✅ Enforced Boundaries - Modules can't access internals ✅ Parallel Builds - Faster compilation ✅ Feature Isolation - Independent development ✅ Reusability - Share modules across projects ✅ Clear Architecture - Explicit dependencies
- Domain models (WifiNetwork, BluetoothDevice, etc.)
- Common utilities
- No Android dependencies
- Use cases (business logic)
- Repository interfaces
- Platform-independent
- Repository implementations
- Room database
- Retrofit API
- Data caching
- UI (Compose screens)
- ViewModels
- Dependency injection
- Android framework
./gradlew :core:build
./gradlew :domain:build
./gradlew :data:build
./gradlew :app:assembleDebug