mae 0.2.2

Opinionated async Rust framework for building Mae-Technologies micro-services — app scaffolding, repo layer, middleware, and test utilities.
Documentation
[package]
name = "mae"
version = "0.2.2"
edition = "2024"
license = "MIT"
description = "Opinionated async Rust framework for building Mae-Technologies micro-services — app scaffolding, repo layer, middleware, and test utilities."
homepage = "https://github.com/Mae-Technologies/mae"
repository = "https://github.com/Mae-Technologies/mae"
documentation = "https://docs.rs/mae"
readme = "README.md"
keywords = ["microservice", "actix-web", "sqlx", "framework", "async"]
categories = ["web-programming", "database", "development-tools"]
exclude = [
    ".cargo",
    ".ci",
    ".git-hooks",
    ".github",
    ".rust_template_version",
    "Cargo.lock",
    "clippy.toml",
    "deny.toml",
    "deny.exceptions.toml",
    "rustfmt.toml",
    "DEVELOPMENT.md",
]

[features]
integration-testing = ["test-utils"]
test-utils = [
    "dep:pretty_assertions",
    "dep:testcontainers",
    "dep:testcontainers-modules",
    "dep:once_cell",
    "dep:dotenvy",
    "dep:url",
    "dep:shellexpand",
    "dep:reqwest",
]

[profile.test]
panic = "unwind"

[dependencies]
mae_macros = "0.1.0"
chrono = { version = "0.4.43", features = ["serde"] }
serde_json = "1.0.149"
sqlx = { version = "0.8.6", default-features = false, features = ["chrono", "macros", "postgres", "runtime-async-std"] }
serde = { version = "1.0.228", features = ["derive"] }
num = "0.4.3"
anyhow = "1.0.100"
serde-aux = "4.7.0"
secrecy = { version = "0.10.3", features = ["serde"] }
config = "0.15.19"
actix-web = "4.12.1"
actix-session = { version = "0.10.1", features = ["redis-session-rustls"] }
tokio = { version = "1.49.0", features = ["macros", "rt-multi-thread", "process"] }
tokio-macros = "2.6.0"
tracing = { version = "0.1.44", default-features = false, features = ["log"] }
tracing-actix-web = "0.7.21"
tracing-bunyan-formatter = "0.3.10"
tracing-log = "0.2.0"
tracing-subscriber = { version = "0.3.22", default-features = false, features = ["env-filter", "registry"] }
thiserror = "2.0.17"
rand = { version = "0.9.2", features = ["std_rng"] }

# Optional deps pulled in by the test-utils feature
pretty_assertions = { version = "1.4.1", optional = true }
testcontainers = { version = "0.26", optional = true }
testcontainers-modules = { version = "0.14", optional = true, default-features = false, features = ["postgres", "neo4j", "redis", "rabbitmq"] }
once_cell = { version = "1", optional = true }
uuid = { version = "1", features = ["v4"] }
rust_decimal = { version = "1" }
dotenvy = { version = "0.15.7", optional = true }
url = { version = "2.5.8", optional = true }
shellexpand = { version = "3.1.1", optional = true }
reqwest = { version = "0.12", optional = true, default-features = false, features = ["json", "rustls-tls"] }

[dev-dependencies]
once_cell = "1"
uuid = { version = "1", features = ["v4"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "macros", "migrate"] }
testcontainers = "0.26"
testcontainers-modules = { version = "0.14", features = ["postgres"] }
pretty_assertions = "1.4.1"
dotenvy = "0.15.7"
url = "2.5.8"
shellexpand = "3.1.1"

[lints.clippy]
unwrap_used = "deny"
expect_used = "deny"