Expand description
EV-invest’s shared Rust libraries, one per Cargo feature.
Each library is a self-contained module gated behind a feature flag, so a consumer pulls in only what it asks for and nothing else is compiled:
ev_lib = { git = "https://github.com/EV-invest/lib.git", default-features = false, features = ["architecture"] }§Available features
architecture— generic, I/O-free,wasm32-safe DDD tactical kernel (typed ids, entities, aggregate roots, repositories, gateways, the unit of work, domain events, specifications). See [architecture].uikit— dep-light Dioxus UI kit (mirrors@evinvest/uikit). See [uikit].analytics— PostHog product analytics (mirrors@evinvest/analytics): native async capture overreqwest; pure-Rust fetch on the Dioxus/wasm frontend. Does network I/O — opt-in, not the kernel. See [analytics].error_monitoring— Sentry error monitoring (mirrors@evinvest/error-monitoring): native backend on thesentrycrate; pure-Rust envelope POST + panic hook on the Dioxus/wasm frontend. See [error_monitoring].experiments— frontend-only A/B testing (mirrors@evinvest/experiments): cookie-bucketed variant assignment; exposure is reported through an injected sink, so it never importsanalytics. See [experiments].settings— typed env settings (mirrors@evinvest/settings): thesettings!macro reads env vars into a validated struct with aggregate error reporting and secret redaction. Zero deps; sops stays at the shell/CI boundary. Seesettings.types— shared domain TypeObjects (mirrors@evinvest/types):PhoneNumberwith E.164 validation and formatting, plus the genericBranded<T, B>newtype for future types (Email, Currency, …). Zero deps, wasm-safe. Seetypes.otel— OpenTelemetry logs + traces over OTLP (native backends only; inert on wasm): twotracinglayers + a flush guard, and tonic interceptors for W3C trace propagation. See [otel].i18n— five-locale internationalisation (mirrors@evinvest/i18n): the locale registry, the/<locale>URL contract,Accept-Languagenegotiation, an ICU-subset message formatter, the translation policy that refuses a translation whose English source has moved, and the [t!] macro — English written where it renders, with the catalogue generated back out of the code. Wasm-safe and zero-dep there; natively it carriesinventory, which is what turnst!sites into that catalogue. Reads the samemessages/<locale>/*.jsonas the TypeScript half, so a catalogue is portable between them. See [i18n].