# jpl-website - Rustelo Framework Implementation
# Generated by cargo rustelo v0.1.0
# Template: content-website | Asset source: local
#
# This Cargo.toml uses the Rustelo framework as dependencies (not a fork!).
# Framework updates are managed through standard Cargo dependency updates.

[package]
name = "jpl-website"
version = "{{project_version}}"
edition = "2021"
authors = [{{authors}}]
description = "jpl-website from Rustelo framework"
license = "MIT OR Apache-2.0"
repository = "{{repository}}"

# Main binary for the web application
[[bin]]
name = "jpl-website-server"
path = "src/main.rs"

# Optional library crate for reusable components
[lib]
name = "jpl_website"
path = "src/lib.rs"

[dependencies]
# Rustelo Framework Dependencies - The core framework components
# These are managed dependencies, not forks. Updates via `cargo rustelo update`
#
# IMPORTANT: For true self-containment, use ONE of these approaches:
#
# Git dependencies (default for self-contained projects)
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" }

# Alternative dependency strategies (configured via rustelo-deps.toml):
#
# Published crates (when available on crates.io):
# rustelo-core = "{{rustelo_core_version}}"
# rustelo-web = "{{rustelo_web_version}}"
#
# Local development (only during framework development):
# rustelo-core = { version = "{{rustelo_core_version}}", path = "../rustelo/crates/rustelo-core" }
# rustelo-web = { version = "{{rustelo_web_version}}", path = "../rustelo/crates/rustelo-web" }

# Optional framework components (uncomment as needed)
# rustelo-auth = { version = "{{rustelo_auth_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" }

# Web Framework Stack
leptos = { version = "0.8.6", features = ["ssr", "router"] }
leptos_axum = "0.8.5"
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"] }

# Async Runtime
tokio = { version = "1.47.1", features = [
    "rt-multi-thread",
    "macros",
    "signal",
    "fs",
    "net"
] }

# Serialization
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"] }

[dev-dependencies]
# Testing framework
tokio-test = "0.4"

[features]
default = ["ssr"]

# Server-Side Rendering (production)
ssr = ["leptos/ssr", "leptos_axum/ssr"]

# Client-Side Hydration (for SPA features)
hydrate = ["leptos/hydrate"]

# Optional framework features (enable as needed)
auth = ["rustelo-auth"]
content = ["rustelo-content"]
database = ["rustelo-core/database"]
cache = ["rustelo-core/cache"]
search = ["rustelo-content/search"]
i18n = ["rustelo-content/i18n"]

[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
# This section is used by `cargo rustelo dev` for hot reloading
[[workspace.metadata.leptos]]
name = "jpl-website"
bin-package = "jpl-website"
lib-package = "jpl_website"
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

# CSS and asset processing is handled by cargo rustelo build system
# which integrates with the frontend pipeline (package.json, UnoCSS, etc.)

# Framework Update Configuration
[package.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"

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

# Files that should never be overwritten (user code)
protected_files = [
    "src/main.rs",
    "src/lib.rs",
    "src/**/*.rs",
    "assets/**/*",
    "content/**/*",
    "local-tasks.just",
    "unocss.local.ts"
]
