Tech Stack
Description
LIRP (Lightweight Reactive Persistence) is a Kotlin/Java library published to Maven Central that solves a specific problem: most reactive libraries make you wire streams manually, and most persistence libraries treat entities as passive data. LIRP does both — declare a property with reactiveProperty() and it becomes observable; add an entity to a repository and persistence happens automatically, transparently, to SQL, JSON or Kafka.
In many codebases, domain objects end up as anemic structures shuffled between services that externally query and mutate them. lirp takes the opposite approach. Inspired by DDD's concept of rich domain models, entities in lirp own their reactivity. When a property changes, the entity itself publishes the event — no external event bus wiring, no service-layer glue. Subscribers observe the entity directly, preserving the Bounded Context boundary and keeping coupling low.
- Entity-first reactivity plus transparent persistence — an in-memory-first architecture backed by SQL (Exposed + HikariCP), JSON files, or a Kafka transactional outbox.
- Convention-over-configuration KSP code generation produces table definitions and accessors; DDD aggregate references with compiler-enforced cardinality and cascade semantics.
- Type-safe, Kotlin-native Query DSL with automatic secondary-index routing, plus soft delete and @Version optimistic locking.
- Multi-module design (api, core, ksp, sql, fx, kafka, gradle-plugin) with a JavaFX bridge and full Java interoperability.
