[package] name = "sideporch" version = "0.7.0" edition = "2024" rust-version = "1.95" description = "A small, self-hosted team chat that ships as one binary" license = "MIT" repository = "https://github.com/niklas-heer/sideporch" readme = "README.md" keywords = ["chat", "self-hosted", "slack", "webhooks"] categories = ["web-programming::http-server"] [dependencies] aes-gcm = "0.11.1" argon2 = "0.6.0" axum = { version = "0.8.9", features = ["multipart", "ws"] } base64ct = { version = "1.8.3", features = ["alloc"] } clap = { version = "4.6.7", features = ["derive", "env"] } flate2 = "1.1.10" full_moon = { version = "2.2.0", default-features = false, features = ["lua54"] } futures-util = "0.3.34" getrandom = "0.4.3" http-body-util = "0.1.5" hyper = "1.11.1" hyper-rustls = { version = "0.27.10", default-features = false, features = ["ring", "webpki-roots", "http1", "http2", "tls12"] } hyper-util = { version = "0.1.21", features = ["client-legacy", "http1", "http2", "tokio"] } jiff = { version = "0.2.37", features = ["tzdb-bundle-always"] } lettre = { version = "0.11.23", default-features = false, features = ["builder", "hostname", "smtp-transport", "tokio1-rustls", "ring", "webpki-roots"] } maud = { version = "0.27.0", features = ["axum"] } minisign-verify = "0.3" mlua = { version = "0.12.1", features = ["lua54", "vendored", "send", "serde"] } phosphor-svgs = "0.5.0" pulldown-cmark = { version = "0.13.4", default-features = false, features = ["html"] } qrcode = { version = "0.14.1", default-features = false, features = ["svg"] } ring = { version = "0.17.14", default-features = false, features = ["alloc"] } rusqlite = { version = "0.40.2", features = ["bundled"] } rustfft = "6.4.1" rustls = { version = "0.23.45", default-features = false, features = ["ring", "std", "tls12"] } selene-lib = { version = "0.31.0", default-features = false, features = ["lua54"] } serde = { version = "1.0.229", features = ["derive"] } serde_json = "1.0.151" sha2 = "0.11.0" stylua = { version = "2.5.2", default-features = false, features = ["lua54"] } sysinfo = { version = "0.39.6", default-features = false, features = ["system", "disk"] } tar = { version = "0.4.46", default-features = false } tokio = { version = "1.53.1", features = ["fs", "macros", "rt-multi-thread", "net", "process", "signal", "sync", "time"] } tower-service = "0.3.3" tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } tract-onnx = "0.23.8" web-push-native = "0.5.0" whatlang = "0.18.0" zip = { version = "8.6.0", default-features = false, features = ["deflate-flate2"] } [build-dependencies] encre-css = "0.21.1" [dev-dependencies] blake2 = "0.10" reqwest = { version = "0.13", default-features = false, features = ["json", "cookies", "form", "multipart"] } tempfile = "3.27.0" tokio-tungstenite = "0.29" [lints.rust] unsafe_code = "forbid" [lints.clippy] pedantic = { level = "deny", priority = -1 } nursery = { level = "deny", priority = -1 } unwrap_used = "deny" expect_used = "deny" indexing_slicing = "deny" arithmetic_side_effects = "deny" unreachable = "deny" unimplemented = "deny" todo = "deny" string_slice = "deny" panic_in_result_fn = "deny" panic = "deny" exit = "deny" as_conversions = "deny" unchecked_time_subtraction = "deny" # Speech models run slowly unoptimized; debug builds and tests optimize # the crates that do the math. [profile.dev.package.tract-core] opt-level = 3 [profile.dev.package.tract-linalg] opt-level = 3 [profile.dev.package.tract-data] opt-level = 3 [profile.dev.package.tract-onnx-opl] opt-level = 3 [profile.dev.package.rustfft] opt-level = 3 [profile.dev.package.ndarray] opt-level = 3 [profile.release] lto = "thin" codegen-units = 1 strip = true