
Shared pure validation rules for clients and backends, decoupled from UI and framework dependencies; semantically versioned contract with Gradle-enforced invariants, CI publishing and local mirror scripts.
Pure Kotlin Multiplatform validation rules shared by Trade Journal clients and backend services. The library has no UI, networking, database, Android runtime, or Spring dependency.
The library is published to Maven Central. Consumers do not need credentials, custom Maven repositories, local checkouts, or composite builds.
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.ibteaapp:validation-contract:1.0.0")
}Kotlin Multiplatform consumers should declare the root coordinate in commonMain. Gradle resolves
the matching JVM, Android, iOS ARM64, or iOS Simulator ARM64 artifact automatically.
The artifact follows Semantic Versioning:
VERSION_NAME and VALIDATION_CONTRACT_VERSION must always contain the same SemVer value. The
Gradle check task enforces this invariant.
./gradlew check
./gradlew publishToMavenLocalpublishToMavenLocal creates the root publication and every supported target publication without
requiring Maven Central credentials or a signing key.
GitHub Releases trigger .github/workflows/publish.yml. The workflow tests, signs, uploads, validates,
and releases every KMP artifact through the Maven Central Portal. Publisher credentials and the GPG
private key live only in GitHub Actions secrets; consumers never receive them.
See RELEASING.md for the one-time publisher setup and release checklist.
Until 1.0.0 is publicly available on Maven Central and both consumers have migrated, the existing
API source mirror can be kept synchronized with:
./scripts/sync-to-local-mirror.sh
./scripts/verify-local-mirror.shThese scripts and the mirror can be removed after the Maven Central cutover.
Copyright 2026 IBTEA. Licensed under the Apache License, Version 2.0. See LICENSE.
Pure Kotlin Multiplatform validation rules shared by Trade Journal clients and backend services. The library has no UI, networking, database, Android runtime, or Spring dependency.
The library is published to Maven Central. Consumers do not need credentials, custom Maven repositories, local checkouts, or composite builds.
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.ibteaapp:validation-contract:1.0.0")
}Kotlin Multiplatform consumers should declare the root coordinate in commonMain. Gradle resolves
the matching JVM, Android, iOS ARM64, or iOS Simulator ARM64 artifact automatically.
The artifact follows Semantic Versioning:
VERSION_NAME and VALIDATION_CONTRACT_VERSION must always contain the same SemVer value. The
Gradle check task enforces this invariant.
./gradlew check
./gradlew publishToMavenLocalpublishToMavenLocal creates the root publication and every supported target publication without
requiring Maven Central credentials or a signing key.
GitHub Releases trigger .github/workflows/publish.yml. The workflow tests, signs, uploads, validates,
and releases every KMP artifact through the Maven Central Portal. Publisher credentials and the GPG
private key live only in GitHub Actions secrets; consumers never receive them.
See RELEASING.md for the one-time publisher setup and release checklist.
Until 1.0.0 is publicly available on Maven Central and both consumers have migrated, the existing
API source mirror can be kept synchronized with:
./scripts/sync-to-local-mirror.sh
./scripts/verify-local-mirror.shThese scripts and the mirror can be removed after the Maven Central cutover.
Copyright 2026 IBTEA. Licensed under the Apache License, Version 2.0. See LICENSE.