A modern Kotlin Multiplatform (KMP) mobile application that provides real-time currency conversion. This project demonstrates a shared-logic architecture where the core business logic, networking, and dependency injection are unified, while the UI remains native to each platform.
- Shared Logic: Kotlin Multiplatform (KMP)
- Android UI Layer: Android: Jetpack Compose
- iOS UI Layer: SwiftUI
- Networking: Ktor 3.0 (with Content Negotiation & Serialization)
- Dependency Injection: Koin 4.0
- Architecture: MVVM (Model-View-ViewModel)
- Concurrency & Interop: SKIE (For seamless Kotlin Coroutines/Flow to Swift Async/Await conversion)
- Build Config: BuildKonfig for secure API key management
shared: The heart of the app. Contains the API client, data models, repositories, and ViewModelscommonMain: Shared business logicandroidMain / iosMain: Platform-specific implementations (e.g., Ktor engines)
composeApp: The Android-specific entry point and Jetpack Compose UIiosApp: The Xcode project for the SwiftUI application
- API Key Setup. This project uses the
ExchangeRate-API. Obtain an API key from their ExchangeRate-API. - Create a
local.propertiesfile in your root directory - Add your key:
EXCHANGE_API_KEY=your_api_key_here - Building the Project! Android: Open in Android Studio and run the composeApp configuration. iOS: Open the iosApp/iosApp.xcworkspace in Xcode or run via the KMP plugin in Android Studio.