[workspace]
members = [
  "crates/siren",
  "crates/siren-core",
  "crates/siren-bot",
  "crates/siren-api",
]
resolver = "2"

[workspace.package]

edition = "2024"
version = "0.3.0"
rust-version = "1.86"
authors = ["Ben Sherriff <ben@bensherriff.com>"]
description = "A Discord bot for playing music"
repository = "https://github.com/bensherriff/siren"
readme = "README.md"

[workspace.dependencies]
# Internal crates
siren-core = { path = "crates/siren-core" }
siren-bot  = { path = "crates/siren-bot" }
siren-api  = { path = "crates/siren-api" }

# Async runtime
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

# Logging
log        = "0.4"
env_logger = "0.11"

# Serialization
serde      = { version = "1", features = ["derive"] }
serde_json = "1"

# Discord / Audio
serenity  = { version = "0.12", default-features = false, features = ["client", "gateway", "rustls_backend", "model", "voice", "cache", "framework", "standard_framework"] }
#songbird  = { version = "0.5", features = ["builtin-queue"] }
# Temporary until DAVE encryption release https://github.com/serenity-rs/songbird/issues/293
songbird = { git = "https://github.com/serenity-rs/songbird.git", branch = "next", features = ["builtin-queue"] }
symphonia = { version = "0.5", features = ["all"] }

# HTTP
reqwest = { version = "0.12", default-features = false, features = ["json"] }

# Database
sqlx  = { version = "0.8", features = ["runtime-tokio", "postgres", "chrono", "uuid"] }
redis = { version = "1", features = ["tokio-comp", "connection-manager", "r2d2"] }

# Utilities
dotenv       = "0.15"
chrono       = { version = "0.4", features = ["serde"] }
uuid         = { version = "1", features = ["serde", "v4"] }
rand         = "0.10"
rand_chacha  = "0.10"
regex        = "1"
lazy_static  = "1"

# Auth / Security
argon2   = { version = "0.5", features = ["std"] }
sha2     = "0.10"
cookie   = { version = "0.18", features = ["percent-encode"] }

# API
axum         = { version = "0.8", features = ["json", "ws", "macros"] }
axum-extra   = { version = "0.12", features = ["typed-header", "cookie"] }
jsonwebtoken = { version = "10", features = ["rust_crypto"] }
tower-http    = { version = "0.6", features = ["fs", "cors"] }
dashmap       = "6"
futures-util  = "0.3"
