slave-framework 0.6.0

Runtime for slave apps (a Laravel-inspired Rust framework for MCP-first apps): server lifecycle, config, logging, Turso Cloud database and migrations, and OpenID Connect sign-in
Documentation
[package]
name = "slave-framework"
version = "0.6.0"
edition.workspace = true
rust-version.workspace = true
description = "Runtime for slave apps (a Laravel-inspired Rust framework for MCP-first apps): server lifecycle, config, logging, Turso Cloud database and migrations, and OpenID Connect sign-in"
license.workspace = true
repository.workspace = true
keywords = ["web", "framework", "axum", "mcp", "migrations"]
categories = ["web-programming::http-server"]

[dependencies]
axum = "0.8.9"
dotenvy.workspace = true
openidconnect = { version = "4.0.1", default-features = false, features = ["reqwest", "rustls-tls"], optional = true }
libsql = { version = "0.10", default-features = false, features = ["remote", "tls"], optional = true }
thiserror = "2.0.21"
# Only for `testing` (the test identity provider).
chrono = { version = "0.4", default-features = false, features = ["clock"], optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
tokio = { version = "1.53.3", features = ["net", "signal"] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }

[features]
default = ["oidc", "database"]
# Sign-in is delegated to an OpenID Connect provider: verify its ID tokens
# (signature via JWKS, issuer, audience, expiry). No passwords are handled.
oidc = ["dep:openidconnect"]
# Turso Cloud (libSQL over HTTP) connections and the migration engine. Only
# the remote client is compiled: no database engine, no C toolchain.
database = ["dep:libsql"]
# `testing::TestDatabase`: a database for tests (a dedicated Turso Cloud test
# database, or a throwaway `turso dev` server).
testing = ["database", "oidc", "tokio/rt", "tokio/sync", "dep:chrono", "dep:serde", "dep:serde_json"]

[dev-dependencies]
# Enables `testing` for this crate's own integration tests.
slave-framework = { path = ".", features = ["testing"] }
tokio = { version = "1.53.3", features = ["macros", "rt-multi-thread"] }