ch-rds 0.1.0

Runtime resource loading and local service orchestration
Documentation
ch-rds-0.1.0 has been yanked.

ch-rds

ch-rds resolves runtime resources and starts conventional local services when an application uses loopback endpoints.

More information is available in the API documentation.

High-level features

  • Typed loaders for web listeners, MariaDB, and SpacetimeDB
  • Explicit production behavior with no local fallback
  • Conventional .env, .env.local, and services.env discovery
  • Local Docker Compose startup for loopback resources
  • Optional frontend/backend development process orchestration

Usage

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let runtime = ch_rds::Runtime::bootstrap()?;
    let bind_addr = runtime
        .load(ch_rds::WebBind::builder().addr("127.0.0.1:8080"))
        .await?;

    println!("{bind_addr}");
    Ok(())
}

Runtime resolves configured remote endpoints directly. Production mode rejects local fallbacks. ENV_FILE selects one explicit dotenv file, while PORT overrides only the port of the fallback listener address.

For conventional layouts, MariaDB discovers services.env in the project root and derives the Compose project name from app/Cargo.toml. A SpacetimeDB module under crates/database/spacetimedb is detected from its Cargo package name. Builders remain available for nonstandard names, paths, ports, and local stacks.

Development runner

The dev feature provides ProjectProfile and run_project. Vite owns frontend hot-module replacement; Watchexec restarts the backend when Rust sources, manifests, lockfiles, Cargo configuration, or SQL migrations change.

cargo install watchexec-cli --version 2.5.1 --locked

Feature flags

Feature Provides
dev Frontend/backend process orchestration and project profiles
btcpay Local BTCPay setup in addition to dev

Minimum supported Rust version

ch-rds requires Rust 1.96 or newer.

License

Licensed under the Sustainable Use License 1.0. See LICENSE.md.