[package]
name = "tracking"
version = "0.1.0"
edition = "2021"
description = "Lightweight tracking pixel and click tracking service for Warmbly"

[dependencies]
# Web framework
axum = "0.7"
tokio = { version = "1", features = ["full"] }
tower-http = { version = "0.5", features = ["cors", "trace"] }

# AWS SDK
aws-config = "1.1"
aws-sdk-ssm = "1.15"
aws-sdk-secretsmanager = "1.15"

# NATS (default event bus): pure-Rust, no native librdkafka to compile.
async-nats = "0.38"

# Kafka with Avro (optional; enabled with `--features kafka`). rdkafka is the
# only native/librdkafka dependency, so the default build compiles far faster
# and needs no libcurl/libsasl system headers.
rdkafka = { version = "0.36", features = ["cmake-build"], optional = true }
apache-avro = { version = "0.21", features = ["derive"], optional = true }
schema_registry_converter = { version = "4.0", features = ["avro", "blocking"], optional = true }

# HTTP client for the click-ticket resolver (always needed by links.rs). Uses
# rustls (pure Rust TLS) instead of native-tls so the default image needs no
# OpenSSL system libraries.
reqwest = { version = "0.11", default-features = false, features = ["blocking", "json", "rustls-tls"] }

# Utils
uuid = { version = "1", features = ["v4", "serde"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }
sha2 = "0.10"
base64 = "0.21"
moka = { version = "0.12", features = ["future"] }

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

[features]
# Default is NATS-only: no rdkafka/librdkafka, so the image builds fast and
# needs no native Kafka toolchain. Build with `--features kafka` to add the
# Kafka + Avro + Schema Registry publisher (selected at runtime by
# EVENTBUS_PROVIDER=kafka).
default = []
kafka = ["dep:rdkafka", "dep:apache-avro", "dep:schema_registry_converter"]

[profile.release]
lto = true
codegen-units = 1
opt-level = "z"
strip = true
