From cc5002d1dfcf8e0fd1ace6622694ba63f6bb2524 Mon Sep 17 00:00:00 2001 From: ulfrxdev Date: Fri, 24 Apr 2026 19:41:05 +0200 Subject: [PATCH] feat(01-04): add Koin + Kermit bootstrap commonMain + iOS bridge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - initKoin() helper with optional KoinAppDeclaration config - empty appModule placeholder (Phase 2+ extends) - configureLogging() sets Kermit tag 'recipe' (D-15) - iOS doInitKoin() bridge → Swift symbol KoinIosKt.doInitKoin --- .../commonMain/kotlin/dev/ulfrx/recipe/di/AppModule.kt | 8 ++++++++ .../src/commonMain/kotlin/dev/ulfrx/recipe/di/Koin.kt | 10 ++++++++++ .../kotlin/dev/ulfrx/recipe/logging/Logging.kt | 8 ++++++++ .../src/iosMain/kotlin/dev/ulfrx/recipe/di/KoinIos.kt | 8 ++++++++ 4 files changed, 34 insertions(+) create mode 100644 composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/AppModule.kt create mode 100644 composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/Koin.kt create mode 100644 composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/logging/Logging.kt create mode 100644 composeApp/src/iosMain/kotlin/dev/ulfrx/recipe/di/KoinIos.kt diff --git a/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/AppModule.kt b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/AppModule.kt new file mode 100644 index 0000000..f0461a6 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/AppModule.kt @@ -0,0 +1,8 @@ +package dev.ulfrx.recipe.di + +import org.koin.dsl.module + +// Phase 2 adds authModule; Phase 4 adds syncModule; Phase 5 adds catalogModule; etc. +val appModule = module { + // intentionally empty in Phase 1 +} diff --git a/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/Koin.kt b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/Koin.kt new file mode 100644 index 0000000..1ce7e87 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/di/Koin.kt @@ -0,0 +1,10 @@ +package dev.ulfrx.recipe.di + +import org.koin.core.KoinApplication +import org.koin.core.context.startKoin +import org.koin.dsl.KoinAppDeclaration + +fun initKoin(config: KoinAppDeclaration? = null): KoinApplication = startKoin { + config?.invoke(this) + modules(appModule) +} diff --git a/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/logging/Logging.kt b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/logging/Logging.kt new file mode 100644 index 0000000..8fbd6a6 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/dev/ulfrx/recipe/logging/Logging.kt @@ -0,0 +1,8 @@ +package dev.ulfrx.recipe.logging + +import co.touchlab.kermit.Logger + +fun configureLogging() { + Logger.setTag("recipe") + // Platform log writers (OSLog iOS, LogCat Android, System.out JVM/Wasm) install by default. +} diff --git a/composeApp/src/iosMain/kotlin/dev/ulfrx/recipe/di/KoinIos.kt b/composeApp/src/iosMain/kotlin/dev/ulfrx/recipe/di/KoinIos.kt new file mode 100644 index 0000000..becaab7 --- /dev/null +++ b/composeApp/src/iosMain/kotlin/dev/ulfrx/recipe/di/KoinIos.kt @@ -0,0 +1,8 @@ +package dev.ulfrx.recipe.di + +import dev.ulfrx.recipe.logging.configureLogging + +fun doInitKoin() { + configureLogging() + initKoin() +}