build: switch to hybrid build for Kotlin/JS web-app and optimize Docker setup

Replaced multi-stage Docker builds with a hybrid approach that pre-builds frontend artifacts locally and copies them into the container. Removed Kotlin Multiplatform configurations from the root project to resolve NodeJsRootPlugin conflicts. Adjusted `.dockerignore` to allow pre-built artifacts and increased Gradle/Kotlin daemon memory for faster builds. Updated Caddyfile for runtime stability and added documentation for new build processes.
This commit is contained in:
2026-02-04 15:34:40 +01:00
parent 03e1484dd3
commit e8dd8cf48f
19 changed files with 195 additions and 1103 deletions
+6 -7
View File
@@ -1,6 +1,5 @@
plugins {
// Fix for "Plugin loaded multiple times": Apply plugin by ID without version (inherited from root)
id("org.jetbrains.kotlin.multiplatform")
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.kotlinSerialization)
}
@@ -15,16 +14,16 @@ kotlin {
binaries.library()
// Re-enabled browser environment after Root NodeJs fix
browser {
testTask {
enabled = false
}
testTask {
enabled = false
}
}
}
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
wasmJs {
binaries.library()
browser()
binaries.library()
browser()
}
sourceSets {
+35 -32
View File
@@ -1,40 +1,43 @@
plugins {
// Fix for "Plugin loaded multiple times": Apply plugin by ID without version (inherited from root)
id("org.jetbrains.kotlin.multiplatform")
alias(libs.plugins.kotlinSerialization)
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.kotlinSerialization)
}
kotlin {
jvm()
js {
browser()
}
// Wasm support enabled?
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
wasmJs {
browser()
jvm()
js {
browser {
testTask {
enabled = false
}
}
}
// Wasm support enabled?
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
wasmJs {
browser()
}
sourceSets {
commonMain {
dependencies {
implementation(projects.core.coreDomain)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
implementation(libs.kotlinx.coroutines.core)
}
}
commonTest {
dependencies {
implementation(libs.kotlin.test)
}
}
jvmMain {
dependencies {
// Removed Exposed dependencies to make this module KMP compatible
// implementation(libs.exposed.core)
// implementation(libs.exposed.jdbc)
}
}
sourceSets {
commonMain {
dependencies {
implementation(projects.core.coreDomain)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
implementation(libs.kotlinx.coroutines.core)
}
}
commonTest {
dependencies {
implementation(libs.kotlin.test)
}
}
jvmMain {
dependencies {
// Removed Exposed dependencies to make this module KMP compatible
// implementation(libs.exposed.core)
// implementation(libs.exposed.jdbc)
}
}
}
}