One Library, Two Platforms
Clean Architecture core implemented in Kotlin Multiplatform (shared/), consumed natively by iOS (Swift / SwiftUI) and Android (Jetpack Compose).
Clean Architecture Layers:
- Domain: Use cases, business models, validation (Konform). Pure Kotlin with zero platform or framework dependencies.
- Data: Repositories, DTOs, API services (Ktor), local storage (Multiplatform Settings).
- Presentation: ViewModels exposing reactive state models to native UI consumers.
Key Design Decisions:
- Business logic lives in
shared/โ written once, tested once, consumed by both platforms. - SKIE enhances Swift interop (Kotlin coroutines become native Swift
async/await, sealed classes become Swiftenumwith associated values). - Koin for dependency injection with KSP annotation processing.
- iOS consumes via XCFramework (SPM), Android via Maven (GitHub Packages).
Module Structure (iOS side):
Generated deterministically via XcodeGen from YAML configuration โ no merge conflicts or noisy .xcodeproj in version control: