# jpl-website - Rustelo CMS Implementation
# Generated by cargo rustelo v0.1.0
# Template: content-website | Asset source: local
#
# This is a workspace-based project structure suitable for CMS applications
# with separate server, client, and shared crates for optimal organization.

[workspace]
resolver = "2"
members = [
    "server",
    "client", 
    "shared"
]

# Shared dependencies for all workspace members
[workspace.dependencies]
# Rustelo Framework Dependencies
rustelo-core = { version = "{{rustelo_core_version}}", git = "https://github.com/your-org/rustelo.git", branch = "main" }
rustelo-web = { version = "{{rustelo_web_version}}", git = "https://github.com/your-org/rustelo.git", branch = "main" }
rustelo-content = { version = "{{rustelo_content_version}}", git = "https://github.com/your-org/rustelo.git", branch = "main" }
rustelo-auth = { version = "{{rustelo_auth_version}}", git = "https://github.com/your-org/rustelo.git", branch = "main" }

# Leptos Framework Stack
leptos = { version = "0.8.6", features = ["ssr"] }
leptos_axum = { version = "0.8.5" }
leptos_router = { version = "0.8.5" }
leptos_meta = { version = "0.8.5" }

# Server Dependencies
axum = { version = "0.8.4", features = ["macros", "tracing"] }
tower = { version = "0.5.2", features = ["util"] }
tower-http = { version = "0.6.6", features = ["fs", "cors", "compression"] }
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "signal", "fs", "net"] }

# Serialization & Data
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

# Logging and Observability  
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }

# Error Handling
anyhow = "1.0"
thiserror = "2.0"

# Utilities
uuid = { version = "1.18", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }

# Content Management Dependencies
pulldown-cmark = { version = "0.12", features = ["simd"] }
gray_matter = "0.2"
comrak = { version = "0.36", features = ["syntect"] }

# Client-side Dependencies
web-sys = { version = "0.3.77" }
wasm-bindgen = "0.2.100"
console_error_panic_hook = "0.1"

# Local crate references
jpl_website-server = { path = "server" }
jpl_website-client = { path = "client" }  
jpl_website-shared = { path = "shared" }

[profile.release]
# Optimized production builds
codegen-units = 1
lto = true
opt-level = 'z'      # Optimize for size
panic = 'abort'      # Smaller binary
strip = true         # Remove debug symbols

[profile.dev]
# Faster development builds
opt-level = 0
debug = true
incremental = true

# Leptos Configuration for Development Server
[[workspace.metadata.leptos]]
name = "jpl-website"
bin-package = "jpl_website-server"
lib-package = "jpl_website-client"
bin-target = "jpl-website-server"

# Output configuration
output-name = "jpl-website"
site-root = "target/site"
site-pkg-dir = "pkg"
assets-dir = "public"

# Development server
site-addr = "127.0.0.1:{{dev_port}}"
reload-port = {{reload_port}}

# Build configuration
env = "DEV"
bin-features = ["ssr"]
lib-features = ["hydrate"]
watch = true
browser-open = true

# Framework Update Configuration
[workspace.metadata.rustelo]
# Framework version tracking for safe updates
framework_version = "0.1.0"
template_variant = "content-website"
config_version = "1.0"
generation_timestamp = "2025-10-28T18:46:17.145459+00:00"

# Workspace structure
project_type = "cms-workspace"
crates = ["server", "client", "shared"]

# Files that can be safely regenerated during updates
generated_files = [
    "Cargo.toml",
    "justfile",
    "package.json", 
    "unocss.config.ts"
]

# Files that should never be overwritten (user code)
protected_files = [
    "server/src/**/*.rs",
    "client/src/**/*.rs", 
    "shared/src/**/*.rs",
    "content/**/*",
    "public/**/*",
    "local-tasks.just"
]