klauthed-core 0.6.0

Core primitives for klauthed: typed config, clock/time, request context, CQRS, domain, and validation.
Documentation

klauthed-core

Foundational primitives shared by every klauthed service.

  • config — profile-driven configuration. A Profile (Local/Dev/Test/Staging/Prod) governs which sources are allowed; staging/prod must use Vault (enforced in the builder). ConfigProvider is a trait (file, env, and a built-in Vault client over reqwest behind the vault feature), so a service can register its own sources. The config-server feature adds ConfigServerProvider, which pulls config from a remote config server — defaulting to the klauthed-native format served by klauthed-web's config server, with spring_cloud() / RawJson modes for other servers.
  • wiring — Spring-style application assembly: AppContext (a type-keyed registry of shared singletons) plus async Starter / AppBuilder auto-config, so crates contribute resources (pools, clients) to one composed context.
  • time — time as an injectable dependency: components take a Clock (SystemClock in production, FixedClock in tests). Timestamp/Duration are the canonical instant and span types, backed by the time crate and fully encapsulated here.
  • id — typed identifiers (UUID v4/v7, ULID).
  • validation — a Validate trait + structured validation errors.
  • contextRequestContext (request id, principal, tenant, deadline), optionally ambient via a tokio task-local (feature task-local).
  • domain / cqrs — building blocks for domain entities and command/query handlers.

Fallible operations return ConfigError (and friends), which implement klauthed_error::DomainError.


Part of the klauthed rust-libraries workspace. Browse the API: cargo doc -p klauthed-core --open.

License

Dual-licensed under MIT or Apache-2.0, at your option.