[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