{
"name": "full-stack",
"description": "A complete Rust full-stack application with client, server, and shared libraries",
"type": "workspace",
"structure": {
"client": {
"apps": ["app1", "app2"],
"frameworks": ["dioxus", "tauri"]
},
"server": {
"services": ["api", "auth"],
"frameworks": ["poem", "poem"]
},
"libs": {
"packages": ["core", "models", "auth"],
"types": ["library", "library", "library"]
}
},
"database": {
"db_type": "postgres",
"orm": "sqlx"
},
"dependencies": {
"default": [
"serde = { version = \"1.0\", features = [\"derive\"] }",
"serde_json = \"1.0\"",
"thiserror = \"1.0\"",
"anyhow = \"1.0\""
],
"client": {
"dioxus": [
"dioxus = \"0.5\"",
"dioxus-web = \"0.5\"",
"wasm-bindgen = \"0.2\""
],
"tauri": [
"tauri = { version = \"1.5\", features = [\"api-all\"] }",
"window-shadows = \"0.2\""
]
},
"server": {
"poem": [
"poem = \"2.0\"",
"tokio = { version = \"1.36\", features = [\"full\"] }",
"tracing = \"0.1\"",
"tracing-subscriber = \"0.3\""
]
},
"deployment": {
"heroku": ["#buildpack = \"emk/rust\""],
"vercel": ["vercel_runtime = \"1.1\""],
"netlify": ["netlify_lambda_http = \"0.5\""],
"flyio": ["#dockerfile = true"],
"railway": ["#dockerfile = true"],
"render": ["#dockerfile = true"]
},
"observability": {
"metrics": [
"prometheus = \"0.13\"",
"metrics = \"0.21\""
],
"tracing": [
"opentelemetry = { version = \"0.20\", features = [\"trace\", \"metrics\"] }",
"opentelemetry-jaeger = \"0.19\""
]
}
},
"dev-dependencies": {
"default": [
"tokio-test = \"0.4\"",
"criterion = \"0.5\""
]
},
"next_steps": [
"cd {{project_name}}",
"# Set up the database",
"# Install PostgreSQL if needed",
"# Create a database: createdb your_database_name",
"export DATABASE_URL=postgres://username:password@localhost/your_database_name",
"# Build the entire workspace",
"cargo build",
"# Run the server",
"cargo run -p api",
"# For Dioxus web client",
"# Install Trunk: cargo install trunk",
"# Install WebAssembly target: rustup target add wasm32-unknown-unknown",
"# Run the client: cd client/app1 && trunk serve",
"# For Tauri desktop client",
"# Run the client: cd client/app2 && cargo tauri dev"
],
"files": [
{
"source": "README.md",
"target": "README.md"
}
]
}