[package] name = "brewlog" version = "1.0.0" edition = "2024" [dependencies] anyhow = "1.0" async-trait = "0.1" axum = { version = "0.7", features = ["macros"] } askama = "0.12" base64 = "0.22" chrono = { version = "0.4", features = ["serde", "clock"] } clap = { version = "4.5", features = ["derive", "env"] } dotenvy = "0.15" isocountry = "0.3" open = "5" reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "gzip"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" rand = "0.8" sha2 = "0.10" sqlx = { version = "0.7", default-features = false, features = [ "runtime-tokio", "tls-rustls", "macros", "chrono", "sqlite", "migrate", ] } thiserror = "1.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "signal"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] } tower = "0.5" tower-cookies = "0.10" tower-http = { version = "0.6", features = ["compression-gzip", "limit", "set-header", "trace"] } slug = "0.1.6" url = "2" uuid = { version = "1", features = ["v4"] } webauthn-rs = { version = "0.5", features = ["danger-allow-state-serialisation"] } webauthn-rs-proto = "0.5" [dev-dependencies] portpicker = "0.1" reqwest = { version = "0.12", default-features = false, features = ["blocking", "cookies", "rustls-tls"] } tempfile = "3.8" once_cell = "1.19" webauthn-authenticator-rs = { version = "0.5", features = ["softpasskey"] } wiremock = "0.6" paste = "1.0.15" [[test]] name = "cli" path = "tests/cli/main.rs" harness = true [profile.release] lto = "thin" strip = true [profile.test] # Run CLI tests serially to share single server instance opt-level = 0 [[test]] name = "server" path = "tests/server/main.rs" harness = true [lints.clippy] # Enable pedantic lints with lower priority so individual allows take precedence pedantic = { level = "warn", priority = -1 } # Pedantic lints to disable (too noisy or not applicable) missing_errors_doc = "allow" # Would require extensive doc changes missing_panics_doc = "allow" # Would require extensive doc changes module_name_repetitions = "allow" # Common pattern in domain types (e.g., RoasterId in roasters) must_use_candidate = "allow" # Too aggressive for this codebase return_self_not_must_use = "allow" # Builder methods returning Self are common needless_pass_by_value = "allow" # Generic T: ToString pattern and consumed value types cast_possible_truncation = "allow" # Pagination values won't exceed u32 in practice cast_sign_loss = "allow" # Database counts are non-negative # Cherry-picked restriction lints (production safety) dbg_macro = "deny" # Prevent debug macros in production todo = "warn" # Flag TODOs for attention unwrap_used = "warn" # Flag unwrap() for review; allow where justified expect_used = "warn" # Flag expect() for review; allow where justified