[workspace]
members = [".", "crates/taskmill"]

[package]
name = "shoebox"
version = "0.3.5"
edition = "2021"
license = "MIT"
description = "Lightweight S3-compatible object storage backed by local filesystem"
repository = "https://github.com/deepjoy/shoebox"
keywords = ["s3", "storage", "object-storage", "aws"]
categories = ["filesystem", "web-programming::http-server", "api-bindings"]
readme = "README.md"

[lib]
name = "shoebox"
path = "src/lib.rs"

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

[features]
default = ["binary"]
binary = ["clap"]

[dependencies]
# Core async runtime
tokio = { version = "1.44", features = ["full"] }

# Web framework
axum = { version = "0.8", features = ["macros"] }

# Database
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "time"] }

# Serialization
serde = { version = "1.0", features = ["derive"] }
toml = "0.8"

# Cryptography
md-5 = "0.10"
sha1 = "0.10"
sha2 = "0.10"
crc32fast = "1"
crc32c = "0.6"
hex = "0.4"
base64 = "0.22"
hmac = "0.12"

# Utilities
uuid = { version = "1.11", features = ["v4", "serde"] }
time = { version = "0.3", features = ["serde", "formatting", "parsing", "macros"] }
thiserror = "2.0"
bytes = "1.9"
futures = "0.3"
tokio-util = { version = "0.7", features = ["io"] }
url = "2"
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace", "limit", "request-id"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rand = "0.9"

# Filesystem scanning (Phase 6)
async-walkdir = "2"
notify = "7"
notify-debouncer-mini = "0.5"
mime_guess = "2"

# Task scheduling
taskmill = { version = "0.1.1", path = "crates/taskmill", default-features = false }

# HTTP client for webhook delivery (Phase 9, HTTPS added in Phase 10)
hyper = "1"
hyper-util = { version = "0.1", features = ["client-legacy", "http1", "tokio"] }
hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "ring", "webpki-tokio"] }
http-body-util = "0.1"

# CLI (optional for library-only usage)
clap = { version = "4.5", features = ["derive", "env"], optional = true }
quick-xml = { version = "0.39.0", features = ["serialize"] }
serde_json = "1.0"

[dev-dependencies]
tempfile = "3"
