Jesús Pérez d3a47108af
Some checks failed
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Build Docker Image (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
CI/CD Pipeline / Cleanup (push) Has been cancelled
chore: update gitignore and fix content
2026-02-08 20:07:09 +00:00

215 lines
4.4 KiB
TOML

# Empty workspace to make this template standalone
[workspace]
[[bin]]
name = "server"
path = "src/main.rs"
[package]
name = "server-template"
version = "0.1.0"
edition = "2021"
authors = ["Rustelo Contributors"]
license = "MIT OR Apache-2.0"
description = "Server-side template using trait-based dependency injection"
documentation = "https://docs.rs/rustelo"
repository = "https://github.com/rustelo/rustelo"
homepage = "https://rustelo.dev"
readme = "README.md"
keywords = [
"rust",
"web",
"leptos",
"axum",
"template",
]
categories = [
"web-programming",
"template-engine",
]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[lib]
crate-type = ["cdylib", "lib"]
[dependencies]
# Pure trait dependencies from Layer 1
rustelo-routing-traits = { path = "../../traits/routing-traits" }
rustelo-component-traits = { path = "../../traits/component-traits" }
rustelo-core-types = { path = "../../traits/core-types" }
# Core lib template
core-lib-template = { path = "../core-lib-template" }
# Client template for SSR
client-template = { path = "../client-template" }
# Essential Leptos dependencies
leptos = { workspace = true, features = ["ssr"] }
leptos_meta = { workspace = true }
leptos_axum = { workspace = true }
leptos_config = { workspace = true }
# Axum web framework
axum = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true, features = ["fs", "cors", "trace"] }
# Async runtime
tokio = { workspace = true, features = [ "rt-multi-thread", "macros", "process", "fs", "net", "time", "sync" ] }
# Serialization
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
# Logging
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }
# Configuration
dotenvy = { workspace = true }
clap] = { workspace = true, features = ["derive"] }
# HTTP client
reqwest = { workspace = true, features = ["json"] }
# Async utilities
futures = { workspace = true }
async-trait = { workspace = true }
# Utilities
regex = { workspace = true }
rand = { workspace = true }
# Optional features
uuid = { workspace = true, features = ["v4", "serde"], optional = true }
chrono = { workspace = true, features = ["serde"], optional = true }
# TLS support
axum-server = { workspace = true, features = ["tls-rustls"], optional = true }
rustls = { workspace = true, optional = true }
rustls-pemfile = { workspace = true, optional = true }
# Authentication
jsonwebtoken = { workspace = true, optional = true }
argon2 = { workspace = true, optional = true }
tower-sessions = { workspace = true, optional = true }
tower-cookies = { workspace = true, optional = true }
# Database
# Content processing
pulldown-cmark = { workspace = true, features = ["simd"] , optional = true }
ammonia = { workspace = true , optional = true }
handlebars = { workspace = true, optional = true }
# Metrics
prometheus = { workspace = true, optional = true }
# Crypto
aes-gcm = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"postgres",
"sqlite",
"chrono",
"uuid",
"migrate",
]
optional = true
# Email
[dependencies.lettre]
version = "0.11"
features = [
"tokio1-native-tls",
"smtp-transport",
"pool",
"hostname",
"builder",
]
optional = true
# Development dependencies
[dev-dependencies]
tempfile = { workspace = true }
axum-test = { workspace = true }
[features]
default = []
# Basic features
ssr = ["leptos/ssr"]
hydrate = ["leptos/hydrate"]
development = []
production = ["tls", "metrics"]
# Optional feature modules
time = ["chrono", "uuid"]
tls = ["axum-server/tls-rustls", "rustls", "rustls-pemfile"]
auth = [
"jsonwebtoken",
"argon2",
"tower-sessions",
"tower-cookies",
"sqlx",
"chrono",
"uuid",
"crypto",
]
database = ["sqlx", "chrono", "uuid"]
content = ["pulldown-cmark", "ammonia", "chrono", "uuid"]
email = ["lettre", "handlebars"]
metrics = ["prometheus", "chrono"]
crypto = ["aes-gcm", "base64", "sha2", "chrono"]
# Feature combinations
full = [
"ssr",
"time",
"tls",
"auth",
"database",
"content",
"email",
"metrics",
"crypto",
]