[package]
edition = "2024"
rust-version = "1.85"
name = "socle"
version = "0.1.1"
authors = ["Gregoire Salingue"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Opinionated axum service bootstrap: telemetry, database, rate limiting, and shutdown in one builder"
readme = "README.md"
keywords = [
"axum",
"tower",
"bootstrap",
"http",
"telemetry",
]
categories = [
"web-programming::http-server",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/brefwiz/socle"
[features]
cursor = ["api-bones/base64"]
database = ["dep:sqlx"]
default = [
"telemetry",
"database",
"ratelimit-memory",
"openapi",
"dotenv",
]
dotenv = ["dep:dotenvy"]
openapi = [
"dep:utoipa",
"dep:utoipa-swagger-ui",
]
ratelimit = []
ratelimit-memory = [
"ratelimit",
"dep:governor",
]
telemetry = []
testing = ["dep:reqwest"]
validation = ["dep:validator"]
[lib]
name = "socle"
path = "src/lib.rs"
[[example]]
name = "minimal"
path = "examples/minimal.rs"
required-features = ["telemetry"]
[[example]]
name = "with_database"
path = "examples/with_database.rs"
required-features = [
"telemetry",
"database",
]
[[example]]
name = "with_ratelimit"
path = "examples/with_ratelimit.rs"
required-features = [
"telemetry",
"ratelimit-memory",
]
[[test]]
name = "integration"
path = "tests/integration.rs"
required-features = ["testing"]
[dependencies.api-bones]
version = "4.0.1"
features = [
"axum",
"uuid",
]
[dependencies.axum]
version = "0.8"
features = ["macros"]
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.dotenvy]
version = "0.15"
optional = true
[dependencies.figment]
version = "0.10"
features = [
"env",
"toml",
]
[dependencies.futures-util]
version = "0.3"
[dependencies.governor]
version = "0.10"
features = [
"std",
"dashmap",
]
optional = true
default-features = false
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"postgres",
"migrate",
]
optional = true
default-features = false
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tower-http]
version = "0.6"
features = [
"trace",
"cors",
"catch-panic",
"compression-full",
"request-id",
"util",
"limit",
]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
[dependencies.utoipa]
version = "5"
optional = true
[dependencies.utoipa-swagger-ui]
version = "9"
features = ["axum"]
optional = true
default-features = false
[dependencies.uuid]
version = "1"
features = [
"v7",
"v5",
]
[dependencies.validator]
version = "0.20"
features = ["derive"]
optional = true
[dev-dependencies.bytes]
version = "1"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
]
default-features = false
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"postgres",
]
default-features = false
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"test-util",
]