[package]
name = "doggygallery"
version = "0.4.3"
edition = "2021"
authors = ["DoggyGallery Contributors"]
description = "A secure, beautiful media gallery server with TLS 1.3, HTTP Basic Auth, and automatic light/dark mode"
license = "MIT"
repository = "https://github.com/meltingscales/DoggyGallery"
homepage = "https://github.com/meltingscales/DoggyGallery"
documentation = "https://docs.rs/doggygallery"
readme = "README.md"
keywords = ["media", "gallery", "server", "https", "tls"]
categories = ["web-programming::http-server", "multimedia"]

[dependencies]
# Web framework
axum = { version = "0.7", features = ["multipart"] }
axum-server = { version = "0.7", features = ["tls-rustls"] }
tokio = { version = "1", features = ["full"] }
tower = "0.4"
tower-http = { version = "0.5", features = ["fs", "trace", "compression-full"] }

# TLS with Post-Quantum Cryptography
rustls = { version = "0.23", features = ["aws_lc_rs"] }
rustls-pemfile = "2.0"
rcgen = "0.13"

# Templates
askama = "0.12"
askama_axum = "0.4"

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

# API Documentation
utoipa = { version = "5", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "8", features = ["axum", "vendored"] }

# CLI arguments
clap = { version = "4", features = ["derive", "env"] }

# Authentication & Security
base64 = "0.22"
subtle = "2.5"
zeroize = { version = "1.8", features = ["derive"] }

# Utilities
mime_guess = "2.0"
percent-encoding = "2.3"
infer = "0.16"
rust-embed = "8.5"
zip = "2.1"
tar = "0.4"
flate2 = "1.0"
id3 = "1.13"

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

# Error handling
anyhow = "1.0"
thiserror = "1.0"

# Include templates and static files in the published package
# Static files are embedded into the binary via rust-embed
# Templates are compiled by Askama at build time
[package.metadata.docs.rs]
all-features = true

# Ensure critical files are included in published package
include = [
    "src/**/*",
    "templates/**/*",
    "static/**/*",
    "Cargo.toml",
    "README.md",
    "LICENSE*",
]

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
