A cross-platform app to display cryptocurrency prices, built using Kotlin Multiplatform and Compose Multiplatform. The app targets Android, iOS, and Desktop (JVM) platforms.
- View real-time cryptocurrency prices.
- Offline first.
- Cross-platform support: Android, iOS, and Desktop.
- Coroutine and Flow for asynchronous operations.
- Comprehensive testing with Maestro and JUnit.
- Test coverage reports with Kover.
- Kotlin Multiplatform: Share code between Android, iOS, and Desktop.
- Compose Multiplatform: Build UI across platforms with Jetpack Compose.
- Multi-module clean architecture: Maintainable and scalable project structure.
- Koin: Lightweight dependency injection framework.
- Coroutines/Flow: Asynchronous programming.
- Ktor: HTTP client.
- SQLDelight: Type-safe SQL, and multiplatform persistence library.
- JUnit: Unit testing framework.
- Kover: Code coverage tool for Kotlin.
- Maestro: End-to-end test automation framework.
The app follows the clean architecture principle, which includes:
- Domain Layer: Contains business logic.
- Data Layer: Handles data operations, including API calls and local database.
- Presentation Layer: Contains UI components built with Compose Multiplatform.
- JDK 20 to build the app
- JVM to run the desktop app
- Xcode to build the iOS app
- Recommended IDE: Intellij or Fleet
- Maestro CLI if you want to run the end to end tests.
./gradlew app-android:assembleRelease
xcodebuild \
-workspace app-iOS/appiOS.xcodeproj/project.xcworkspace \
-configuration Debug \
-scheme appiOS \
-sdk iphonesimulator \
-derivedDataPath app-iOS/build
./gradlew app-desktop:run
Data are provided by the awesome CoinGecko API