[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"
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"]
oidc = ["dep:openidconnect"]
database = ["dep:libsql"]
testing = ["database", "oidc", "tokio/rt", "tokio/sync", "dep:chrono", "dep:serde", "dep:serde_json"]
[dev-dependencies]
slave-framework = { path = ".", features = ["testing"] }
tokio = { version = "1.53.3", features = ["macros", "rt-multi-thread"] }