[workspace] members = [ "services/backend-api", "services/data-collector", "services/json-generator", "services/shared-lib", "services/build-orchestrator", "services/edge-agent", "services/events-relay", "services/telemetry-ingestor", ] resolver = "2" # ── Shared dependencies ─────────────────────────────────────────────────────── # Centralized versions prevent conflicts and reduce Cargo.lock churn. [workspace.dependencies] tokio = { version = "1.50.0", features = ["full"] } serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0.149" chrono = { version = "0.4.44", features = ["serde"] } chrono-tz = "0.10.4" uuid = { version = "1.23.0", features = ["v4", "serde"] } anyhow = "1.0.102" tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] } sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "postgres", "uuid", "chrono", "json", "bigdecimal"] } rumqttc = { version = "0.25.1", features = ["use-rustls"] } zstd = "0.13" dotenvy = "0.15.7" axum = { version = "0.8.8", features = ["macros"] } tower = { version = "0.5.3", features = ["util"] } tower-http = { version = "0.6.8", features = ["cors", "trace"] } bigdecimal = { version = "0.4.7", features = ["serde"] } aes-gcm = "0.10.3" pbkdf2 = "0.12.2" sha2 = "0.10.8" rand = "0.8.5" reqwest = { version = "0.13.2", default-features = false, features = ["json", "rustls", "stream"] } tokio-modbus = { version = "0.17.0", default-features = false, features = ["tcp"] } s7 = "0.1.2" semver = "1.0" shared-lib = { path = "services/shared-lib" } prometheus = "0.13" # ── Disk-space optimized profiles ────────────────────────────────────────────── # These reduce the target/ directory from ~37 GB to ~5-10 GB in normal use. [profile.dev] # "limited" keeps backtraces but skips detailed type info → PDBs ~6x smaller. debug = "limited" [profile.dev.package."*"] # Compile third-party crates with basic optimizations even in debug. # Makes dependency .rlib files 20-40% smaller and tests run faster. opt-level = 1 [profile.release] # Strip all debug symbols from release binaries. strip = true # Thin LTO produces smaller binaries with manageable link time. lto = "thin" # Single codegen unit for maximum size reduction. codegen-units = 1 # Abort on panic — removes unwinding tables (~5-10% smaller binary). panic = "abort" # ── CI/Docker profile: fast builds, still production-grade ───────────────────── # Use with `cargo build --profile ci`. Output goes to target/ci/. # Skips LTO (~3-5 min saved) and uses parallel codegen units. # Binaries are ~5-10% larger but functionally identical. [profile.ci] inherits = "release" lto = false strip = true codegen-units = 8