# Rustelo — Workspace Dependencies Registry # # Single source of truth for [workspace.dependencies] across rustelo and all # implementations. This file is a Cargo workspace manifest with zero members — # its only purpose is to host the canonical dependency table where Cargo-native # tooling (Zed/rust-analyzer, cargo-edit, Dependabot, cargo-outdated) can read # and update versions naturally. # # Sync workflow: # cargo xtask sync-deps --check verify rustelo/Cargo.toml matches # cargo xtask sync-deps rewrite rustelo/Cargo.toml # cargo xtask sync-deps --target rewrite /Cargo.toml (paths rebased) # # Path metadata that does not fit native Cargo (e.g. "do not rebase this path # when propagating to other workspaces") lives in `sync.toml` alongside. [workspace] resolver = "2" members = [] [workspace.dependencies] # --- Rustelo foundation crates --------------------------------------------- rustelo_utils = { path = "../crates/foundation/crates/rustelo_utils" } rustelo_core_types = { path = "../crates/foundation/crates/rustelo_core_types" } rustelo_language = { path = "../crates/foundation/crates/rustelo_language" } rustelo_routing = { path = "../crates/foundation/crates/rustelo_routing" } rustelo_core_lib = { path = "../crates/foundation/crates/rustelo_core_lib" } rustelo_components_leptos = { path = "../crates/foundation/crates/rustelo_components_leptos" } rustelo_components_htmx = { path = "../crates/foundation/crates/rustelo_components_htmx" } rustelo_pages_leptos = { path = "../crates/foundation/crates/rustelo_pages_leptos" } rustelo_pages_htmx = { path = "../crates/foundation/crates/rustelo_pages_htmx" } rustelo_seo = { path = "../crates/foundation/crates/rustelo_seo" } rustelo_client = { path = "../crates/foundation/crates/rustelo_client" } rustelo_server = { path = "../crates/foundation/crates/rustelo_server", default-features = false } rustelo_tools = { path = "../crates/foundation/crates/rustelo_tools" } rustelo_macros = { path = "../crates/foundation/crates/rustelo_macros" } rustelo_config = { path = "../crates/foundation/crates/rustelo_config" } # --- Rustelo framework crates ---------------------------------------------- rustelo_core = { path = "../crates/framework/crates/rustelo_core" } rustelo_web = { path = "../crates/framework/crates/rustelo_web" } rustelo_auth = { path = "../crates/framework/crates/rustelo_auth" } rustelo_content = { path = "../crates/framework/crates/rustelo_content" } rustelo_cli = { path = "../crates/framework/crates/rustelo_cli" } # --- External path deps (outside rustelo, no-rebase via sync.toml) --------- platform-nats = { path = "../../../stratumiops/code/crates/platform-nats" } # --- Leptos ecosystem ------------------------------------------------------ leptos = "=0.8.15" leptos_router = "=0.8.11" leptos_axum = "=0.8.7" any_spawner = "0.3" leptos_config = "=0.8.8" leptos_meta = "=0.8.5" leptos_integration_utils = "=0.8.7" reactive_graph = "0.2.14" # --- Serialization / common ------------------------------------------------ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" serde-wasm-bindgen = "0.6.5" toml = "1.1.2" # --- HTTP / runtime -------------------------------------------------------- axum = "0.8.9" axum-server = { version = "0.8", features = ["tls-rustls"] } axum-test = "20.0" tokio = { version = "1.52", features = ["rt-multi-thread"] } tokio-util = { version = "0.7", features = ["io"] } tokio-stream = { version = "0.1", features = ["sync"] } tokio-test = "0.4" tower = "0.5.3" tower-http = { version = "0.6.11", features = ["fs"] } tower-sessions = "0.15" tower-cookies = "0.11" http = "1" reqwest = { version = "0.13.4", features = ["json"] } reqwasm = "0.5.0" # --- WASM / browser -------------------------------------------------------- wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" js-sys = "=0.3.97" web-sys = { version = "=0.3.97", features = [ "Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "KeyboardEvent", "Event", "Storage", "console", "File", "SvgElement", "SvgsvgElement", "SvgPathElement", "MediaQueryList", ] } gloo-net = "0.7.0" gloo-timers = { version = "0.4", features = ["futures"] } console_error_panic_hook = "0.1.7" console_log = "1" # --- Errors / logging ------------------------------------------------------ anyhow = "1.0.102" thiserror = "2.0.18" log = "0.4.30" env_logger = "0.11" tracing = "0.1" tracing-subscriber = "0.3" # --- i18n ------------------------------------------------------------------ fluent = "0.17" fluent-bundle = "0.16" fluent-syntax = "0.12" fluent-templates = { version = "0.14.0", features = ["tera"] } unic-langid = { version = "0.9", features = ["unic-langid-macros"] } # --- Auth / crypto --------------------------------------------------------- jsonwebtoken = { version = "10.4", features = ["rust_crypto"] } argon2 = "0.5" oauth2 = "5.0" rustls = "0.23" rustls-pemfile = "2.2" totp-rs = "5.7" qrcode = { version = "0.14", features = ["svg"] } base32 = "0.5" sha2 = "0.11" base64 = "0.22" aes-gcm = "0.10" hex = "0.4.3" # --- Storage / data -------------------------------------------------------- sqlx = { version = "0.9.0", features = [ "runtime-tokio", "tls-rustls-ring", "postgres", "sqlite", "chrono", "uuid", "migrate", ] } uuid = { version = "1.23", features = ["v4", "serde", "js"] } chrono = { version = "0.4", features = ["serde"] } time = { version = "0.3", features = ["serde"] } # --- Content / templating -------------------------------------------------- pulldown-cmark = { version = "0.13", features = ["simd"] } comrak = { version = "0.52", features = ["syntect"] } tera = "1.20" minijinja = { version = "2", features = ["loader", "builtins", "json"] } handlebars = "6.4" gray_matter = "0.3" syntect = "5.3" ammonia = "4.1" scraper = "0.27" html-escape = "0.2" unicode-normalization = "0.1" # --- Email ----------------------------------------------------------------- lettre = { version = "0.11", default-features = false, features = [ "tokio1-rustls-tls", "smtp-transport", "pool", "hostname", "builder", ] } urlencoding = "2.1" # --- Misc utility ---------------------------------------------------------- regex = "1.12.3" glob = "0.3.3" walkdir = "2.5" ignore = "0.4" tempfile = "3.27" notify = { version = "8.2.0", default-features = false } dotenv = "0.15.0" async-trait = "0.1.89" async-compression = { version = "0.4", features = ["gzip", "tokio"] } async-nats = "0.49" nkeys = "0.4" bytes = "1.11" futures = "0.3.32" rand = "0.10" rand_core = "0.10" getrandom = { version = "0.4", features = ["std", "wasm_js"] } once_cell = "1.21.4" dashmap = "6" lru = "0.18" cfg-if = "1.0" paste = "1.0.15" typed-builder = "0.23" rhai = { version = "1.25", features = ["serde", "only_i64", "no_float"] } # --- CLI / TUI ------------------------------------------------------------- clap = { version = "4.6", features = ["derive", "env"] } ratatui = "0.30" inquire = "0.9" crossterm = "0.29" dialoguer = "0.12" console = "0.16" indicatif = "0.18" similar = "3.1" # --- Macro support --------------------------------------------------------- syn = { version = "2.0", features = ["full"] } quote = "1.0" proc-macro2 = "1.0" # --- Metrics --------------------------------------------------------------- prometheus = "0.14" # --- Path / version utilities ---------------------------------------------- shellexpand = "3.1" semver = "1.0" pathdiff = "0.2" # --- Test mocking ---------------------------------------------------------- mockall = "0.14" wiremock = "0.6"