import org.jetbrains.compose.desktop.application.dsl.TargetFormat /** * Shell-Modul: Meldestelle Desktop App * Reines JVM/Compose-Desktop-Modul – Desktop-First gemäß MASTER_ROADMAP. * Setzt alle Core- und Feature-Module zu einer lauffähigen Desktop-Anwendung zusammen. */ plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.kotlinSerialization) id("org.jetbrains.compose.hot-reload") } kotlin { jvm() sourceSets { jvmMain.dependencies { // Core-Module implementation(projects.frontend.core.domain) implementation(projects.frontend.core.designSystem) implementation(projects.frontend.core.navigation) implementation(projects.frontend.core.network) implementation(projects.frontend.core.sync) implementation(projects.frontend.core.localDb) implementation(projects.frontend.core.auth) // Feature-Module implementation(projects.frontend.features.nennungFeature) implementation(projects.frontend.features.pingFeature) implementation(projects.frontend.features.znsImportFeature) implementation(projects.frontend.features.veranstalterFeature) implementation(projects.frontend.features.veranstaltungFeature) implementation(projects.frontend.features.turnierFeature) implementation(project(":frontend:features:profile-feature")) // Compose Desktop implementation(compose.desktop.currentOs) implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) implementation(compose.materialIconsExtended) implementation(compose.uiTooling) implementation(libs.composeHotReloadApi) // DI (Koin) implementation(libs.koin.core) implementation(libs.koin.compose) implementation(libs.koin.compose.viewmodel) // Coroutines implementation(libs.kotlinx.coroutines.swing) // Bundles implementation(libs.bundles.kmp.common) implementation(libs.bundles.compose.common) } jvmTest.dependencies { implementation(libs.kotlin.test) } } } compose.desktop { application { mainClass = "at.mocode.desktop.MainKt" nativeDistributions { targetFormats(TargetFormat.Deb, TargetFormat.Msi, TargetFormat.Dmg) packageName = "Meldestelle" packageVersion = "1.0.0" description = "ÖTO-konforme Turnier-Meldestelle – Desktop App" vendor = "mo-code.at" linux { iconFile.set(project.file("src/jvmMain/resources/icon.png")) } windows { menuGroup = "Meldestelle" upgradeUuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } } }