[workspace]
members = [".", "migration"]
[workspace.dependencies]
sea-orm = { version = "1.1.1", features = ["sqlx-postgres", "runtime-tokio-rustls", "macros", "with-chrono", "with-uuid"] }
chrono = { version = "0.4.38", features = ["serde"] }
uuid = { version = "1.11.0", features = ["v4", "v7", "serde"] }
serde = { version = "1.0", features = ["derive"] }
[package]
name = "dms"
version = "0.1.0"
edition = "2024"
[lib]
name = "dms"
path = "src/lib.rs"
[dependencies]
axum = { version = "0.8.5", features = ["multipart"] }
log = "0.4.28"
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "sync", "process", "time"] }
tower-http = { version = "0.6.6", features = ["fs", "trace"] }
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
anyhow = "1.0.100"
tracing = "0.1.41"
axum-prometheus = "0.9.0"
metrics-process = "2.4.0"
# Already in the tree under axum-prometheus; declared so the app can describe
# and set gauges of its own alongside the HTTP ones.
metrics = "0.24"
axum-htmx = { version = "0.7.0", features = ["tokio"] }
minijinja = { version = "2.10.2", features = ["loader", "builtins", "json", "urlencode"] }
minijinja-embed = "2.12"
# Database dependencies
sea-orm = { workspace = true }
chrono = { workspace = true }
uuid = { workspace = true }
serde = { workspace = true }
argon2 = "0.6.0"
sha2 = "0.11.1"
hex = "0.4.3"
migration = { path = "./migration" }
# CLI dependencies
clap = { version = "4.5", features = ["derive"] }
rpassword = "7.4"
serde_json = "1.0.145"
# Queue + storage + media
# On the app's tokio runtime, with rustls on ring (the provider sqlx and
# reqwest already use: two would leave rustls without a default) and the
# system's roots, as lapin 2's defaults trusted.
lapin = { version = "4.12", default-features = false, features = ["tokio", "rustls--ring", "rustls-native-certs"] }
futures-util = "0.3"
tokio-util = { version = "0.7", features = ["io"] }
# image's defaults minus "avif": that feature is ravif's AVIF *encoder*
# (thumbnails are written as JPEG), and it pulled in rav1e and the
# unmaintained paste with it. Reading AVIF would be "avif-native", which
# was never on.
image = { version = "0.25", default-features = false, features = [
"rayon", "bmp", "dds", "exr", "ff", "gif", "hdr", "ico", "jpeg", "png",
"pnm", "qoi", "tga", "tiff", "webp",
] }
mime = "0.3"
mime_guess = "2.0"
async-trait = "0.1"
thiserror = "2.0"
ocrs = "0.10"
rten = "0.21"
rten-imageproc = "0.21"
qrcode = { version = "0.14", default-features = false, features = ["svg"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "multipart", "rustls-tls"] }
# Zip ingest. Only the codecs real-world image archives use — "stored" is
# always available, deflate covers everything Finder/Explorer produce.
zip = { version = "9", default-features = false, features = ["deflate"] }
[build-dependencies]
minijinja-embed = "2.12"
[dev-dependencies]
tokio = { version = "1.47.1", features = ["macros", "rt-multi-thread"] }
# "mock" lets the job-upsert tests assert on generated SQL without a live DB.
sea-orm = { workspace = true, features = ["mock"] }
⭐
Log in to mark this repository.
3.1 KiB · text
History
6228e32