StratoSDK is a framework with a declarative approach similar to Flutter/React, written and designed entirely for Rust.
| 1 | [workspace] |
| 2 | members = [ |
| 3 | "examples/hello_world", |
| 4 | "examples/counter", |
| 5 | "examples/calculator", |
| 6 | "examples/custom_init", |
| 7 | "examples/complex_demo", |
| 8 | "examples/advanced_renderer", |
| 9 | "examples/comprehensive_test", |
| 10 | "examples/modern_dashboard", |
| 11 | "examples/control_gallery", |
| 12 | "crates/strato-core", |
| 13 | "crates/strato-renderer", |
| 14 | "crates/strato-widgets", |
| 15 | "crates/strato-platform", |
| 16 | "crates/strato-macros", |
| 17 | "crates/strato-ui-core", |
| 18 | "crates/strato-ui-renderer", |
| 19 | "examples/animated_showcase", |
| 20 | "examples/macro_showcase", |
| 21 | "examples/taffy_demo", |
| 22 | ] |
| 23 | resolver = "2" |
| 24 | |
| 25 | [package] |
| 26 | name = "strato-sdk" |
| 27 | version.workspace = true |
| 28 | edition.workspace = true |
| 29 | authors.workspace = true |
| 30 | license.workspace = true |
| 31 | repository.workspace = true |
| 32 | homepage.workspace = true |
| 33 | documentation.workspace = true |
| 34 | readme.workspace = true |
| 35 | keywords.workspace = true |
| 36 | categories.workspace = true |
| 37 | description = "A lightweight, secure, and reactive UI framework" |
| 38 | |
| 39 | [dependencies] |
| 40 | strato-core = { workspace = true } |
| 41 | strato-widgets = { workspace = true } |
| 42 | strato-platform = { workspace = true } |
| 43 | |
| 44 | [workspace.package] |
| 45 | version = "0.1.0" |
| 46 | edition = "2021" |
| 47 | authors = ["StratoSDK Team"] |
| 48 | license = "MIT OR Apache-2.0" |
| 49 | repository = "https://github.com/stratosdk/strato-sdk" |
| 50 | homepage = "https://stratosdk.dev" |
| 51 | documentation = "https://docs.stratosdk.dev" |
| 52 | readme = "README.md" |
| 53 | keywords = ["gui", "ui", "graphics", "wgpu", "cross-platform"] |
| 54 | categories = ["gui", "graphics", "wasm"] |
| 55 | |
| 56 | [workspace.dependencies] |
| 57 | # Internal crates |
| 58 | strato-core = { path = "crates/strato-core", version = "0.1.0" } |
| 59 | strato-renderer = { path = "crates/strato-renderer", version = "0.1.0" } |
| 60 | strato-widgets = { path = "crates/strato-widgets", version = "0.1.0" } |
| 61 | strato-platform = { path = "crates/strato-platform", version = "0.1.0" } |
| 62 | strato-macros = { path = "crates/strato-macros", version = "0.1.0" } |
| 63 | |
| 64 | # Core dependencies |
| 65 | tokio = { version = "1.40", features = ["rt-multi-thread", "macros", "sync", "time"] } |
| 66 | futures = "0.3" |
| 67 | futures-lite = "1.13" |
| 68 | futures-util = { version = "0.3", default-features = false } |
| 69 | thiserror = "1.0" |
| 70 | anyhow = "1.0" |
| 71 | reqwest = { version = "0.12", features = ["blocking", "rustls-tls"] } |
| 72 | async-broadcast = "0.7.2" |
| 73 | async-channel = "2.3.1" |
| 74 | async-fs = "2.1.2" |
| 75 | async-io = "2.4.0" |
| 76 | async-task = "4.2.0" |
| 77 | bytes = { version = "1.11.1", features = ["serde"] } |
| 78 | cfg-if = "1.0" |
| 79 | cfg_aliases = "0.2.1" |
| 80 | concat-idents = "1.1.4" |
| 81 | ctrlc = "3.4.7" |
| 82 | instant = { version = "0.1.12", features = ["wasm-bindgen"] } |
| 83 | log = { version = "0.4", features = ["serde", "std"] } |
| 84 | lazy_static = "1.4" |
| 85 | libc = "0.2" |
| 86 | |
| 87 | # State Management |
| 88 | arc-swap = "1.7" |
| 89 | dashmap = "6.0" |
| 90 | parking_lot = "0.12" |
| 91 | slotmap = "1.0" |
| 92 | smallvec = "1.13" |
| 93 | rustc-hash = "2.1.1" |
| 94 | |
| 95 | # Math and Graphics |
| 96 | glam = "0.29" |
| 97 | euclid = "0.22" |
| 98 | palette = "0.7" |
| 99 | ordered-float = { version = "3.0.0", features = ["serde"] } |
| 100 | pathfinder_color = "0.5" |
| 101 | pathfinder_geometry = "0.5.1" |
| 102 | |
| 103 | # Serialization |
| 104 | serde = { version = "1.0", features = ["derive"] } |
| 105 | serde_json = "1.0" |
| 106 | bincode = "1.3" |
| 107 | ron = "0.8" |
| 108 | |
| 109 | # Renderer |
| 110 | wgpu = { version = "0.20", features = ["webgl"] } |
| 111 | lyon = "1.0" |
| 112 | cosmic-text = "0.12" |
| 113 | image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] } |
| 114 | bytemuck = { version = "1.16", features = ["derive"] } |
| 115 | arboard = { version = "3.6.1", default-features = false } |
| 116 | font-kit = { version = "0.14", default-features = false, features = ["source"] } |
| 117 | resvg = "0.47.0" |
| 118 | |
| 119 | # Platform |
| 120 | winit = { version = "0.29", features = ["serde"] } |
| 121 | raw-window-handle = "0.6" |
| 122 | block = "0.1.6" |
| 123 | blocking = "1.6.2" |
| 124 | chrono = { version = "0.4", features = ["serde"] } |
| 125 | cocoa = "=0.26.0" |
| 126 | core-foundation = "0.9.4" |
| 127 | core-graphics = "0.23.2" |
| 128 | core-text = "20.1.0" |
| 129 | nix = { version = "0.26.4", default-features = false, features = ["signal"] } |
| 130 | objc = "0.2" |
| 131 | windows = { version = "0.62.2", features = ["Win32", "Win32_System", "Win32_System_Com"] } |
| 132 | windows-core = "0.62.2" |
| 133 | winreg = "0.55.0" |
| 134 | x11rb = "0.13.0" |
| 135 | zbus = "5.9.0" |
| 136 | |
| 137 | # Web |
| 138 | wasm-bindgen = "0.2" |
| 139 | web-sys = "0.3" |
| 140 | js-sys = "0.3" |
| 141 | wasm-bindgen-futures = "0.4" |
| 142 | console_error_panic_hook = "0.1" |
| 143 | gloo = { version = "0.11.0", default-features = false, features = ["events", "futures", "utils"] } |
| 144 | |
| 145 | # Development |
| 146 | tracing = "0.1" |
| 147 | tracing-subscriber = { version = "0.3", features = ["env-filter"] } |
| 148 | tracing-wasm = "0.2" |
| 149 | criterion = { version = "0.5", features = ["html_reports"] } |
| 150 | pretty_assertions = "1.4" |
| 151 | derivative = "2.2.0" |
| 152 | derive_more = "0.99.17" |
| 153 | dirs = "6.0.0" |
| 154 | enum-iterator = "1.1.3" |
| 155 | env_logger = "0.10.0" |
| 156 | float-cmp = "0.9.0" |
| 157 | itertools = "0.14.0" |
| 158 | minimp4 = "0.1.2" |
| 159 | num-traits = "0.2" |
| 160 | openh264 = "0.8" |
| 161 | rand = "0.8.2" |
| 162 | rangemap = "1.3.0" |
| 163 | rust-embed = { version = "8.7.0", features = ["include-exclude"] } |
| 164 | similar = { version = "2.7", features = ["inline"] } |
| 165 | simplelog = "0.12.2" |
| 166 | strum = "0.27" |
| 167 | strum_macros = "0.27" |
| 168 | tempfile = "3.8.0" |
| 169 | vec1 = { version = "1.8.0", features = ["serde"] } |
| 170 | version-compare = "0.1" |
| 171 | |
| 172 | # Procedural macros |
| 173 | syn = { version = "2.0", features = ["full", "extra-traits"] } |
| 174 | quote = "1.0" |
| 175 | proc-macro2 = "1.0" |
| 176 | |
| 177 | [profile.release] |
| 178 | opt-level = 3 |
| 179 | lto = "thin" |
| 180 | codegen-units = 16 |
| 181 | strip = true |
| 182 | panic = "abort" |
| 183 | incremental = true |
| 184 | |
| 185 | [profile.release-with-debug] |
| 186 | inherits = "release" |
| 187 | strip = false |
| 188 | debug = true |
| 189 | |
| 190 | [profile.wasm] |
| 191 | inherits = "release" |
| 192 | opt-level = "z" |
| 193 | lto = "fat" |
| 194 | |
| 195 | [profile.dev] |
| 196 | opt-level = 1 |
| 197 | |
| 198 | [profile.bench] |
| 199 | inherits = "release" |
| 200 | debug = true |
| 201 |