ch-rds 0.1.3

Runtime resource loading and local service orchestration
Documentation
# 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](https://docs.rs/ch-rds).

## 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
- Health-gated, protocol-verified Docker Compose startup for loopback resources
- Optional frontend/backend development process orchestration

## Usage


```rust,no_run
#[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.

Conventional layouts auto-discover MariaDB and
`crates/database/spacetimedb`; builders cover custom stacks. Protocol-level
readiness is checked only after Docker reports the service healthy. One locked
service restart remains available for a previously healthy but persistently
broken endpoint; containers are not restarted while their first initialization
is still in progress. SpacetimeDB updates publish in place to preserve data and
identity.

## 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.

```console
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`](LICENSE.md).