diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d0c600a --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,135 @@ +[workspace] +resolver = "2" +members = [ + "crates/chattyness-db", + "crates/chattyness-error", + "crates/chattyness-shared", + "crates/chattyness-admin-ui", + "crates/chattyness-user-ui", + "apps/chattyness-owner", + "apps/chattyness-app", +] +exclude = ["chattyness-webserver"] + +[workspace.package] +version = "0.1.0" +edition = "2024" +license = "MIT" +repository = "https://github.com/your-org/chattyness" + +[workspace.dependencies] +# Internal crates +chattyness-db = { path = "crates/chattyness-db" } +chattyness-error = { path = "crates/chattyness-error" } +chattyness-shared = { path = "crates/chattyness-shared" } +chattyness-admin-ui = { path = "crates/chattyness-admin-ui" } +chattyness-user-ui = { path = "crates/chattyness-user-ui" } + +# Leptos framework +leptos = "0.8" +leptos_meta = "0.8" +leptos_router = "0.8" +leptos_axum = "0.8" + +# Axum web server +axum = { version = "0.8", features = ["macros", "ws"] } +axum-extra = { version = "0.10", features = ["multipart"] } +tower = "0.5" +tower-http = { version = "0.6", features = ["fs", "compression-gzip"] } + +# Session management +tower-sessions = "0.14" +tower-sessions-sqlx-store = { version = "0.15", features = ["postgres"] } + +# Database +sqlx = { version = "0.8", features = [ + "runtime-tokio", + "tls-rustls", + "postgres", + "uuid", + "chrono", + "json" +] } + +# Serialization +serde = { version = "1", features = ["derive"] } +serde_json = "1" + +# Error handling +thiserror = "2" + +# CLI +clap = { version = "4", features = ["derive", "env"] } + +# Async runtime +tokio = { version = "1", features = ["full"] } +futures = "0.3" + +# Concurrent data structures +dashmap = "6" + +# Configuration +toml = "0.8" + +# Utilities +uuid = { version = "1", features = ["v4", "serde", "js"] } +chrono = { version = "0.4", features = ["serde"] } +dotenvy = "0.15" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +http = "1" +regex = "1" + +# Password hashing +argon2 = "0.5" + +# Image processing +image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] } +reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] } + +# Random token generation +rand = "0.8" +sha2 = "0.10" +hex = "0.4" + +# WASM dependencies +console_error_panic_hook = "0.1" +wasm-bindgen = "0.2" +gloo-net = "0.6" +gloo-timers = "0.3" +urlencoding = "2" +web-sys = { version = "0.3", features = [ + "Blob", + "CanvasRenderingContext2d", + "CloseEvent", + "Document", + "DomRect", + "Element", + "ErrorEvent", + "EventTarget", + "File", + "FileList", + "FormData", + "HtmlCanvasElement", + "HtmlCollection", + "HtmlElement", + "HtmlFormElement", + "HtmlImageElement", + "HtmlInputElement", + "ImageData", + "KeyboardEvent", + "Location", + "MessageEvent", + "MouseEvent", + "Node", + "Storage", + "TextMetrics", + "WebSocket", + "Window", +] } +js-sys = "0.3" + +[profile.release] +lto = true +opt-level = 'z' +codegen-units = 1