Skip to content

Kayan

Kayan merges base config with optional overrides and generates typed Kotlin values. Shared code reads config directly without platform-specific wiring.

Shared code first

No more Android-only BuildConfig. Generated typed object readable from shared Kotlin code across every platform target.

Opinionated merging

One base, external brand overrides, predictable resolution. Keep the app in one repo and pull customer overrides at build time without forking.

Build-time guarantees

Schema ownership lives with the app. Declared keys, missing values, and type mismatches are checked at build time. Use strict validation when unknown keys should fail too.

Use cases

  • Gradual migration away from BuildConfig
  • White-label products with one shared base config
  • Multi-module builds that share one config file
  • Target-specific KMP values through expect / actual
  • Compile-time feature flags and endpoints
  • Generated JSON Schema and Markdown docs

Schema kinds

  • string, boolean, int, long, double
  • stringMap, stringList, stringListMap
  • enumValue for normalized enum generation
  • custom adapters for consumer-owned types