[package]
name = "rivvend"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Rivven broker server with Raft consensus and SWIM membership"

[features]
default = ["dashboard"]
cedar = ["rivven-core/cedar"]
oidc = ["rivven-core/oidc"]
tls = ["rivven-core/tls"]
dashboard = ["rust-embed", "mime_guess"]
protobuf = ["rivven-protocol/protobuf"]

[[bin]]
name = "rivvend"
path = "src/main.rs"

[dependencies]
rivven-core = { workspace = true }
rivven-protocol = { workspace = true }
rivven-cluster = { workspace = true, features = ["raft"] }
tokio = { workspace = true }
bytes = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
postcard = { workspace = true }
parking_lot = { workspace = true }
dashmap = "6.1"
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
clap = { workspace = true }

axum = { workspace = true }
tower-http = { workspace = true }
openraft = { version = "0.9", features = ["serde"] }
reqwest = { workspace = true }
rand = { workspace = true }
axum-server = { version = "0.7", features = ["tls-rustls"] }
subtle = { workspace = true }
socket2 = "0.5"

# Dashboard (optional)
rust-embed = { version = "8.3", optional = true }
mime_guess = { version = "2.0", optional = true }

[dev-dependencies]
tempfile = "3"
proptest = "1.4"
