[package] name = "ai-synth-backend" version = "0.1.0" edition = "2021" default-run = "ai-synth-backend" [lib] name = "ai_synth_backend" path = "src/lib.rs" [[bin]] name = "ai-synth-backend" path = "src/main.rs" [dependencies] # Web framework axum = { version = "0.8", features = ["macros", "multipart"] } tower = { version = "0.5", features = ["util", "timeout"] } tower-http = { version = "0.6", features = ["fs", "cors", "trace", "set-header"] } tokio = { version = "1", features = ["full"] } # Database sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json", "migrate"] } # Serialization serde = { version = "1", features = ["derive"] } serde_json = "1" # HTTP client (Resend, Turnstile) reqwest = { version = "0.12", features = ["json"] } # Date/time chrono = { version = "0.4", features = ["serde"] } # Cryptography sha2 = "0.10" rand = "0.8" base64 = "0.22" hex = "0.4" aes-gcm = "0.10" zeroize = { version = "1", features = ["derive"] } # Async trait (needed for trait objects) async-trait = "0.1" # Logging tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } # Config dotenvy = "0.15" clap = { version = "4", features = ["derive"] } # HTML parsing (scraper service) scraper = "0.22" ego-tree = "0.10" # URL parsing (scraper SSRF checks) url = "2" # Email validation email_address = "0.2" # Error handling anyhow = "1" thiserror = "2" # UUID uuid = { version = "1", features = ["v4", "serde"] } # Concurrency (for rate limiter) dashmap = "6" [dev-dependencies] tower = { version = "0.5", features = ["util"] } http-body-util = "0.1" reqwest = { version = "0.12", features = ["json"] } serde_json = "1" uuid = { version = "1", features = ["v4"] } tokio = { version = "1", features = ["full"] } sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json", "migrate"] }