[package] name = "eventsnap-backend" version = "0.1.0" edition = "2024" [dependencies] axum = { version = "0.8", features = ["multipart"] } tokio = { version = "1", features = ["full"] } sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "uuid", "chrono", "macros", "migrate"] } serde = { version = "1", features = ["derive"] } serde_json = "1" tower = "0.5" tower-http = { version = "0.6", features = ["trace", "cors", "compression-full", "fs"] } tower_governor = "0.4" jsonwebtoken = "9" bcrypt = "0.15" uuid = { version = "1", features = ["v4", "serde"] } chrono = { version = "0.4", features = ["serde"] } tokio-stream = { version = "0.1", features = ["sync"] } tokio-util = { version = "0.7", features = ["io", "compat"] } futures = "0.3" sha2 = "0.10" rand = "0.9" anyhow = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } dotenvy = "0.15" sysinfo = "0.32" image = "0.25" # default-features = false drops "parallel", which is what actually bounds oxipng's memory: # with rayon it evaluates row filters concurrently, each trial holding its own full-size # buffer, and there is no Options knob to cap that. Without the feature, lib.rs swaps in a # sequential shim (oxipng's own supported path) so peak scales with ONE trial, not N. # PNG optimisation gets slower; it is a background, best-effort, lossless size saving. # # "filetime" must be KEPT: without it OutFile::Path { preserve_attrs: true } silently no-ops. # Dropping "binary" also removes clap/glob/env_logger — a CLI's dependencies that were being # compiled into a server image — and "zopfli", which preset 2 does not use (it selects # Deflaters::Libdeflater, which is not feature-gated). oxipng = { version = "9", default-features = false, features = ["filetime"] } async_zip = { version = "0.0.17", features = ["tokio", "deflate"] } include_dir = "0.7" infer = "0.15" [profile.release] opt-level = 3 lto = true codegen-units = 1 strip = true