[workspace]
members = [".", "tideway-macros", "tideway-cli"]
[package]
name = "tideway"
version = "0.7.13"
edition = "2024"
authors = ["JD"]
description = "A batteries-included Rust web framework built on Axum for building SaaS applications quickly"
license = "MIT OR Apache-2.0"
repository = "https://github.com/jordcodes/tideway-rs"
readme = "README.md"
documentation = "https://docs.rs/tideway"
keywords = ["web", "framework", "axum", "api", "async"]
categories = ["web-programming::http-server"]
rust-version = "1.85"
[dependencies]
tideway-macros = { version = "0.1.0", optional = true }
axum = { version = "0.8.6", features = ["multipart", "ws"] }
tokio = { version = "1.48.0", features = ["full"] }
tower = "0.5"
tower-http = { version = "0.6.7", features = ["trace", "request-id", "util", "cors", "compression-gzip", "compression-br", "timeout"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
thiserror = "2.0"
anyhow = "1.0"
config = "0.14"
jsonwebtoken = { version = "10", features = ["aws_lc_rs"] }
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
base64 = "0.22"
async-trait = "0.1"
uuid = { version = "1.0", features = ["v4", "serde"] }
url = "2.5"
futures = "0.3"
urlencoding = "2.1"
fastrand = "2.1"
serde_urlencoded = "0.7"
validator = { version = "0.18", features = ["derive"], optional = true }
sea-orm = { version = "1.1", features = ["sqlx-postgres", "sqlx-sqlite", "runtime-tokio-rustls", "macros"], optional = true }
sea-orm-migration = { version = "1.1", optional = true }
chrono = { version = "0.4", optional = true }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "sqlite"], optional = true }
utoipa = { version = "5.3", features = ["axum_extras", "chrono", "uuid"], optional = true }
utoipa-axum = { version = "0.2", optional = true }
utoipa-swagger-ui = { version = "9.0", features = ["axum"], optional = true }
prometheus = { version = "0.13", optional = true }
moka = { version = "0.12", features = ["future"], optional = true }
redis = { version = "0.27", features = ["tokio-comp"], optional = true }
cookie = { version = "0.18", features = ["private"], optional = true }
hex = { version = "0.4", optional = true }
hmac = "0.12"
sha2 = "0.10"
subtle = "2.5"
secrecy = { version = "0.10", optional = true }
async-stripe = { version = "0.41", default-features = false, features = [
"runtime-tokio-hyper-rustls-webpki",
"checkout",
"billing",
], optional = true }
argon2 = { version = "0.5", optional = true }
totp-rs = { version = "5.6", features = ["qr", "gen_secret"], optional = true }
sha1 = { version = "0.10", optional = true }
rand = "0.8"
dashmap = { version = "6.1", optional = true }
lettre = { version = "0.11", default-features = false, features = ["tokio1-rustls-tls", "smtp-transport", "builder"], optional = true }
governor = "0.10"
[features]
default = ["database", "openapi", "macros"]
feature-gate-errors = []
feature-gate-warnings = []
macros = ["tideway-macros", "openapi"]
database = ["sea-orm", "sea-orm-migration", "chrono"]
database-sqlx = ["sqlx"]
openapi = ["utoipa", "utoipa-axum", "utoipa-swagger-ui"]
validation = ["validator"]
metrics = ["prometheus"]
cache = ["moka"]
cache-redis = ["redis", "cache"]
sessions = ["cookie", "hex"]
jobs = ["chrono"]
jobs-redis = ["redis", "jobs"]
websocket = ["dashmap"]
email = ["lettre"]
test-auth-bypass = []
auth = ["argon2"]
auth-mfa = ["auth", "totp-rs"]
auth-breach = ["sha1"]
billing = ["hex", "secrecy", "async-stripe"]
billing-seaorm = ["billing", "database"]
test-billing = []
organizations = []
admin = ["chrono"]
organizations-seaorm = ["organizations", "database"]
organizations-billing = ["organizations", "billing"]
test-organizations = ["organizations"]
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
[[bench]]
name = "overhead"
harness = false
[[example]]
name = "email_example"
required-features = ["email"]
[[example]]
name = "seaorm_auth"
required-features = ["database", "auth", "auth-mfa"]