171 lines
4.6 KiB
TOML
Raw Normal View History

2025-10-07 10:59:52 +01:00
[package]
authors.workspace = true
description = "Control center service with JWT authentication, user management, and real-time WebSocket events"
2026-01-12 05:07:30 +00:00
edition.workspace = true
name = "control-center"
version.workspace = true
2025-10-07 10:59:52 +01:00
[dependencies]
# ============================================================================
# WORKSPACE DEPENDENCIES
# ============================================================================
# Core async runtime
async-trait = { workspace = true }
2026-01-12 05:07:30 +00:00
futures = { workspace = true }
tokio = { workspace = true }
2025-10-07 10:59:52 +01:00
# Web server and API
axum = { workspace = true }
2026-01-12 05:07:30 +00:00
hyper = { workspace = true }
2025-10-07 10:59:52 +01:00
tower = { workspace = true }
tower-http = { workspace = true }
# Serialization and data
2026-01-12 05:07:30 +00:00
chrono = { workspace = true }
2025-10-07 10:59:52 +01:00
serde = { workspace = true }
serde_json = { workspace = true }
toml = { workspace = true }
uuid = { workspace = true }
# Database
sqlx = { workspace = true }
2026-01-12 05:07:30 +00:00
surrealdb = { workspace = true }
2025-10-07 10:59:52 +01:00
# Configuration and CLI
clap = { workspace = true }
config = { workspace = true }
# Error handling
anyhow = { workspace = true }
2026-01-12 05:07:30 +00:00
thiserror = { workspace = true }
2025-10-07 10:59:52 +01:00
# Logging
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
# Validation
regex = { workspace = true }
2026-01-12 05:07:30 +00:00
validator = { workspace = true }
2025-10-07 10:59:52 +01:00
# HTTP client for external services
reqwest = { workspace = true }
# HTTP service clients (machines, init, AI) - enables remote service calls
service-clients = { workspace = true }
# Platform configuration management
platform-config = { workspace = true }
2025-10-07 10:59:52 +01:00
# Security and cryptography
2026-01-12 05:07:30 +00:00
aes-gcm = { workspace = true }
2025-10-07 10:59:52 +01:00
argon2 = { workspace = true }
base64 = { workspace = true }
2026-01-12 05:07:30 +00:00
getrandom = { workspace = true }
hmac = { workspace = true }
jsonwebtoken = { workspace = true }
2025-10-07 10:59:52 +01:00
rand = { workspace = true }
2026-01-12 05:07:30 +00:00
ring = { workspace = true }
2025-10-07 10:59:52 +01:00
sha2 = { workspace = true }
# ============================================================================
# ADDITIONAL WORKSPACE DEPENDENCIES
# ============================================================================
# System utilities
dirs = { workspace = true }
# Security and cryptography
constant_time_eq = { workspace = true }
2026-01-12 05:07:30 +00:00
hkdf = { workspace = true }
rsa = { workspace = true }
2025-10-07 10:59:52 +01:00
subtle = { workspace = true }
2026-01-12 05:07:30 +00:00
zeroize = { workspace = true }
2025-10-07 10:59:52 +01:00
# Tower services
tower-service = { workspace = true }
tower_governor = { workspace = true }
# Cedar policy engine
cedar-policy = { workspace = true }
# Template engine
tera = { workspace = true }
# Statistics
statistics = { workspace = true }
# Caching and storage
redis = { workspace = true }
# Scheduling
cron = { workspace = true }
tokio-cron-scheduler = { workspace = true }
# MFA Authentication
2026-01-12 05:07:30 +00:00
hex = { workspace = true }
image = { workspace = true }
lazy_static = { workspace = true }
qrcode = { workspace = true }
totp-rs = { workspace = true }
webauthn-rs = { workspace = true }
webauthn-rs-proto = { workspace = true }
2025-10-07 10:59:52 +01:00
[dev-dependencies]
assert_matches = { workspace = true }
2026-01-12 05:07:30 +00:00
tempfile = { workspace = true }
tokio-test = { workspace = true }
2025-10-07 10:59:52 +01:00
# ============================================================================
# FEATURES - Module Organization for Coupling Reduction
# ============================================================================
#
# Rationale: Feature flags organize 46+ modules into logical groups,
# reducing visible module count from 46 to ~12 core modules.
# This enables:
# - Selective compilation (faster builds for minimal setups)
# - Dependency reduction (unused features don't get linked)
# - Clear module responsibilities (features map to functionality)
# - Dead code elimination at compile time
#
[features]
# Core: Always-on, required for basic functionality
# Modules: auth, handlers, services, storage, models, middleware, clients
core = []
# KMS: Key Management System - Encryption/decryption operations
# Modules: kms, storage enhancements
kms = ["core"]
# Audit: Security event logging and compliance audit trails
# Modules: audit
audit = ["core"]
# MFA: Multi-factor authentication (TOTP, WebAuthn)
# Modules: mfa
mfa = ["core"]
# Compliance: Policy evaluation and compliance checking (experimental)
# Modules: compliance, policies
compliance = ["core"]
# Experimental: Advanced features in development
# Modules: anomaly (detection)
experimental = ["core"]
# Default: All features enabled
default = ["core", "kms", "audit", "mfa", "compliance", "experimental"]
# Full: All features enabled (development and testing)
all = ["core", "kms", "audit", "mfa", "compliance", "experimental"]
2025-10-07 10:59:52 +01:00
# Library target
[lib]
name = "control_center"
path = "src/lib.rs"
# Binary target (uses all features by default)
2025-10-07 10:59:52 +01:00
[[bin]]
name = "provisioning-control-center"
path = "src/main.rs"