origin-app 0.2.0

Composition root machinery for Origin applications: ApplicationBuilder, modules, service registry.
Documentation

origin-app

Composition root machinery for Origin applications: ApplicationBuilder, modules, service registry.

Part of Origin, a Rust/Tauri platform for building desktop applications from a shared set of domain crates. See the workspace documentation for how the pieces fit together, and ARCHITECTURE.md for the rules this crate follows.

Example

use origin_app::{ApplicationBuilder, ApplicationModule, ModuleRegistry};
use origin_domain::Result;

#[derive(Debug)]
struct PulseModule;

impl ApplicationModule for PulseModule {
    fn id(&self) -> &'static str {
        "pulse"
    }

    fn register(&self, registry: &mut ModuleRegistry) -> Result<()> {
        // read settings, provide services, subscribe to events
        Ok(())
    }
}

let app = ApplicationBuilder::in_memory()
    .module(PulseModule)
    .build()?;

assert_eq!(app.modules(), &["pulse"]);

ApplicationBuilder::in_memory() wires in-memory storage, a memory secret store and a no-op notification service — the configuration the whole application is tested against without starting a desktop session.

Stability

Pre-1.0 (0.2.0). Public types, enums and field sets may still change between minor versions; pin an exact version if that matters to you.