This project is a state-of-the-art Kotlin Multiplatform (KMP) Starter Pack targeting Android, iOS, and Desktop (JVM). It leverages the latest ecosystem technologies (Kotlin 2.3.21, Gradle 9.5.0, AGP 9.0, Java 25) and rigorously applies Clean Architecture and Domain-Driven Design (DDD) principles.
Les contributions sont les bienvenues ! Consultez :
Contributions are welcome! See:
- 🇬🇧 Contributing Guide / 🇫🇷 Guide de contribution
- 🇬🇧 Code of Conduct / 🇫🇷 Code de Conduite
- 🇬🇧 Security Policy / 🇫🇷 Politique de Sécurité
- 🇬🇧 Support / 🇫🇷 Assistance
- 🇬🇧 Changelog / 🇫🇷 Journal des modifications
The :shared module is organized into distinct layers to maximize testability, maintainability, and decoupling:
graph TD
UI[Presentation Layer: Compose Multiplatform / ViewModel] --> Domain[Domain Layer: Use Cases / Models / Repository Interfaces]
Data[Data Layer: Repository Impls / Ktor / Local SQL] --> Domain
Data --> Platform[Platform-Specific Code: expect/actual]
- Domain: Contains pure business rules with zero framework dependencies (Use Cases with
invokeoperator, self-validating models, repository interfaces). - Data: Concrete repository implementations, network communication, and database layer.
- Presentation: Immutable
UiStatemodeling and ViewModels using asynchronousStateFlow. - Dependency Injection (DI): Centralized multiplatform configuration via Koin.
The GitHub Actions pipeline (ci.yml) implements a dual-speed system optimized for bandwidth and compute time:
- Fast-Track (Feature branches): Compiles and tests only the local JVM target (
./gradlew :shared:jvmTest). Runs in under 10 seconds. - Deep-Testing (Branches / Pull Requests to
master): Runs the full test suite (./gradlew allTests) on all simulators and target platforms to validate code quality before production.
./gradlew :shared:jvmTest./gradlew allTestsgradle wrapper