backbone-support 0.11.0

Customer support: issues tracked against service level agreements, and warranty claims
Documentation
[package]
name = "backbone-support"
version = "0.11.0"
edition = "2021"
description = "Customer support: issues tracked against service level agreements, and warranty claims"
license = "MIT OR Apache-2.0"
repository = "https://github.com/faridlab/backbone-support"
exclude = [".claude/", ".github/", "graphify-out/"]

[lib]
path = "src/lib.rs"

[dependencies]
backbone-outbox = { version = "3.0.0", features = ["multi_tenant"] }
# -----------------------------------------------------------------------------
# Backbone Framework crates
#
# Pulled directly from the public framework repository so this skeleton works
# anywhere on disk without path fix-up. For reproducible builds, pin to a
# specific tag or commit by replacing `branch = "main"` with `tag = "vX.Y.Z"`
# or `rev = "<commit-sha>"`. Cargo dedupes the git fetch — the repo is only
# cloned once even though four crates reference it.
# -----------------------------------------------------------------------------
backbone-core = { version = "3.7.0", features = ["postgres"] }
backbone-orm = { version = "3.0.0" }
backbone-auth = { version = "3.0.0", features = ["axum"] }
backbone-messaging = { version = "3.0.0" }

# OpenAPI schema derive. The schema generator emits ungated `use utoipa::ToSchema;`
# in every entity and DTO file, so the dep is unconditional even though the
# `derive(ToSchema)` itself is feature-gated to `openapi`.
utoipa = { version = "5", features = ["chrono", "uuid"] }

# Core async runtime and serialization
tokio = { version = "1.0", features = ["full"] }
async-trait = "0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
uuid = { version = "1.0", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
# Money/quantities — near-universal in domain modules. Generated code for any `decimal`
# field imports rust_decimal, so ship it (and the matching sqlx feature) by default.
rust_decimal = { version = "1.36", features = ["serde"] }

# Database (PostgreSQL primary)
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "uuid", "chrono", "json", "migrate", "rust_decimal"] }

# HTTP framework (Axum)
axum = { version = "0.7", features = ["macros"] }
tower = "0.4"
tower-http = { version = "0.5", features = ["cors", "trace"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Validation
validator = { version = "0.16", features = ["derive"] }

# Error handling
anyhow = "1.0"
thiserror = "1.0"

# Configuration
config = "0.14"
serde_yaml = "0.9"

# Protocol Buffers (Generated from Schema-First YAML)
tonic = "0.12"
prost = "0.13"
prost-types = "0.13"

[features]
default = []
events = []
auth = []
grpc = []
openapi = []
validation = []

[build-dependencies]
tonic-build = "0.12"

[dev-dependencies]
tempfile = "3.0"
tokio-test = "0.4"
mockall = "0.12"
pretty_assertions = "1.0"

# Integration testing framework — the generated tests/integration_tests.rs hits a live server
# via reqwest; guarded-route probes hit the router in-process via tower's ServiceExt::oneshot.
reqwest = { version = "0.12", features = ["json", "rustls-tls"] }
jsonwebtoken = "9.3"
rand = "0.8"

# TEST-ONLY edge: the escalation seam drives the REAL backbone-project (open a delivery Project) through
# the ProjectPort. Dev-dependency ONLY -- the shipped support library has ZERO normal Cargo edge to
# backbone-project (the two Tier-4 modules stay independent).
backbone-project = { version = "0.6.0" }