[workspace]
members = [
"crates/allframe-core",
"crates/allframe-macros",
"crates/allframe-forge",
"crates/allframe-mcp",
]
resolver = "2"
[package]
name = "allframe"
version = "0.1.12"
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Complete Rust web framework with built-in HTTP/2 server, REST/GraphQL/gRPC, compile-time DI, CQRS - TDD from day zero"
readme = "README.md"
[dependencies]
allframe-core = { workspace = true, features = ["di", "openapi", "router", "otel", "cqrs"] }
allframe-forge = { workspace = true }
anyhow = { workspace = true }
[[bin]]
name = "allframe"
path = "src/bin/allframe.rs"
[[example]]
name = "resilience"
required-features = ["resilience"]
[[example]]
name = "security"
required-features = ["security"]
[features]
default = ["di", "openapi", "router", "otel", "cqrs", "health"]
di = ["allframe-core/di"]
openapi = ["allframe-core/openapi"]
otel = ["allframe-core/otel"]
health = ["allframe-core/health"]
router = ["allframe-core/router"]
router-graphql = ["allframe-core/router-graphql"]
router-grpc = ["allframe-core/router-grpc"]
router-grpc-tls = ["allframe-core/router-grpc-tls"]
router-full = ["allframe-core/router-full"]
cqrs = ["allframe-core/cqrs"]
cqrs-allsource = ["allframe-core/cqrs-allsource"]
cqrs-postgres = ["allframe-core/cqrs-postgres"]
cqrs-rocksdb = ["allframe-core/cqrs-rocksdb"]
resilience = ["allframe-core/resilience"]
security = ["allframe-core/security"]
http-client = ["allframe-core/http-client"]
otel-otlp = ["allframe-core/otel-otlp"]
metrics = ["allframe-core/metrics"]
cache-memory = ["allframe-core/cache-memory"]
cache-redis = ["allframe-core/cache-redis"]
rate-limit = ["allframe-core/rate-limit"]
utils = ["allframe-core/utils"]
[dev-dependencies]
assert_cmd = "2.0"
predicates = "3.0"
tempfile = "3.8"
allframe-macros = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true }
async-trait = { workspace = true }
tracing = "0.1"
[workspace.package]
version = "0.1.12"
edition = "2021"
rust-version = "1.86"
authors = ["AllFrame Contributors"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/all-source-os/all-frame"
homepage = "https://all-source-os.github.io/all-frame"
documentation = "https://docs.rs/allframe"
keywords = ["web", "framework", "api", "tdd", "clean-architecture"]
categories = ["web-programming::http-server", "asynchronous"]
[workspace.dependencies]
tokio = { version = "1.48", features = ["full"] }
hyper = { version = "1.8", features = ["full"] }
async-trait = "0.1"
thiserror = "2.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
assert_cmd = "2.0"
predicates = "3.1"
tempfile = "3.15"
proptest = "1.6"
mockall = "0.13"
trybuild = "1.0"
criterion = "0.5"
clap = "4.5"
anyhow = "1.0.75"
syn = "2.0"
quote = "1.0"
proc-macro2 = "1.0"
allframe-core = { version = "0.1.12", path = "crates/allframe-core", default-features = false }
allframe-macros = { version = "0.1.12", path = "crates/allframe-macros" }
allframe-forge = { version = "0.1.12", path = "crates/allframe-forge" }
[profile.test]
opt-level = 0
debug = true
[profile.bench]
opt-level = 3
lto = true
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true