A multi-module Kotlin Multiplatform (KMP) application built to demonstrate modern development best practices. It consumes the Spaceflight News API to provide a list-detail view of the latest spaceflight articles.
- Cross-Platform UI - 100% shared UI using Compose Multiplatform
- Offline-First - Caches network requests using Room (KMP) for seamless offline viewing
- Modern State Management - Unidirectional Data Flow using the MVI (Model-View-Intent) pattern
- Deep Modularization - Strict separation of concerns via feature-based multi-module architecture
This project utilizes Clean Architecture combined with a multi-module setup managed by Gradle
Convention Plugins (build-logic). The project is split into the following layers:
base- Core utilities and base classesfeature- Feature modulesapi- Public models and interfacesdata- Internal implementation (Repositories, Network, Database)presentation- UI, ViewModels, and Composables
data- Core module that collects featuredatamodulescomposeApp- The application module that wires dependencies together using dependency injectionandroidApp,iosApp- The app entry points
- Kotlin Multiplatform - Targeting Android, iOS, and Desktop
- Gradle Convention Plugins & Version Catalogs - Scalable, type-safe build logic
- Koin - Dependency Injection
- Coroutines & Flow - Asynchronous programming
- Compose Multiplatform - UI framework
- AndroidX Navigation Compose - Type-safe navigation
- Coil - Image loading
- Ktor - Asynchronous HTTP client
- Room (KMP) - Local SQLite database
- DataStore - Local storage
- Kotlinx Serialization - JSON parsing
kotlin-test&koin-test- Unit testingktor-client-mock- Mocking API responses
- GitHub Actions - Continuous Integration for automated building and testing
- Replace Koin with Metro(Kotlin 2.3.20)
- Add
feature:settings - Build binaries with CI
- Replace Nav2 with Nav3
