Kotlin multiplatform libraries that work anywhere.
Dependency injection, serialization, reactive state, immutable data, date/time, and caching — the building blocks behind Kraft and Funktor.
A DI container built around per-request scoping. Define a blueprint, create container instances with fresh dynamic services per unit of work. Constructor injection, validated dependency graphs, three lifecycles (Singleton, Dynamic, Prototype), lazy injection, and full introspection.
Serialization that understands nullable types, default values, and sealed classes without annotation clutter. Codec-based architecture with pluggable modules for datetime, polymorphism, and custom types. Designed to serialize to and from maps/lists rather than a specific wire format.
KSP-generated code that lets you modify deeply nested immutable data structures with simple property assignments. Mark your data classes with @Mutable and get type-safe mutator functions that compose across nesting levels — including lists, sets, and maps.
A lightweight reactive streams library where every stream always has a current value. Lazy subscription chains, composable operators (map, filter, combine, debounce, fold, history), error-resilient subscribers, and Flow interop. Built for UI state in Kraft.
Date, time, timezone, and range types for Kotlin Multiplatform. Built on kotlinx-datetime with a type system designed to prevent common mistakes: MpLocalDateTime has no arithmetic (DST-ambiguous), MpInstant requires a timezone for calendar ops. Rich anchoring, formatting, and a testable Kronos clock.
A coroutine-based in-memory cache with pluggable eviction: TTL after last access, max entries (LRU), or max memory with recursive object size estimation. Thread-safe, multiplatform, and designed for hot paths like serialization caches.
28 easing functions organized into In, Out, and InOut categories, with range binding and time-based animation via Kronos. Four bucketed probability distributions (uniform, normal, exponential, triangular) with inverse-CDF sampling and combinators for blending, inverting, and reversing.