Skip to content

ygdrasil-io/project-template

🚀 Project Template - Kotlin Multiplatform (KMP)

Kotlin Gradle AGP Java CI/CD License: MIT Contributing Projet: Planning Projet: Incubating Projet: Stable Projet: Deprecated Projet: Archived


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.


🤝 Contribuer / Contributing

Les contributions sont les bienvenues ! Consultez :

Contributions are welcome! See:


🏗️ Project Architecture

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]
Loading

Design Layers (shared/src/commonMain)

  • Domain: Contains pure business rules with zero framework dependencies (Use Cases with invoke operator, self-validating models, repository interfaces).
  • Data: Concrete repository implementations, network communication, and database layer.
  • Presentation: Immutable UiState modeling and ViewModels using asynchronous StateFlow.
  • Dependency Injection (DI): Centralized multiplatform configuration via Koin.

⚡ CI/CD Workflow

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.

🛠️ Useful Development Commands

Run local tests (JVM Fast-Track)

./gradlew :shared:jvmTest

Run all tests (All targets)

./gradlew allTests

Generate Gradle Wrapper

gradle wrapper

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages