Expand description
§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, andservices.envdiscovery - Protocol-verified 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.
Conventional layouts auto-discover MariaDB and
crates/database/spacetimedb; builders cover custom stacks. Protocol-level
readiness permits one locked service restart, while 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.
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.
Modules§
- cronjob
- Background-job scheduling and execution primitives.
- dev
- Development commands for building and running an application workspace.
Structs§
- Local
Stack - Settings for the bundled local Docker Compose stack.
- MariaDB
- Configures how a MariaDB resource should be resolved for the runtime.
- Maria
DbResource - Intermediate configuration derived from
MariaDBused during loading. - Project
- Filesystem layout discovered for the running application.
- Runtime
- Runtime facade used by app entrypoints to load shared resources before handing control to the app server future.
- SpacetimeDB
- Configures how a SpacetimeDB endpoint should be resolved for the runtime.
- Spacetime
DbConnection - Resolved SpacetimeDB endpoint plus the private module-owner token when the shared runtime manages a local development module.
- Spacetime
DbResource - Intermediate configuration derived from
SpacetimeDBused during loading. - WebBind
- Configures the app web listener address for the runtime.
- WebBind
Resource - Intermediate configuration derived from
WebBindused during loading.
Enums§
- Runtime
Environment - Describes the execution environment used to resolve resources.