201 lines
4.6 KiB
Text
201 lines
4.6 KiB
Text
# Rustelo Manifest Contracts
|
|
#
|
|
# Type validation for rustelo.manifest.ncl files.
|
|
# Generated by `cargo rustelo new` from template + framework options.
|
|
# Evaluated at runtime by ManifestResolver (rustelo_utils::manifest).
|
|
#
|
|
# JSON output is deserialized into rustelo_utils::manifest::RusteloManifest.
|
|
|
|
{
|
|
ManifestMeta = {
|
|
version
|
|
| String
|
|
| doc "Manifest schema version",
|
|
|
|
schema
|
|
| String
|
|
| doc "Schema URL for IDE/tooling support"
|
|
| optional,
|
|
},
|
|
|
|
ProjectInfo = {
|
|
name
|
|
| String
|
|
| doc "Implementation name (matches Cargo workspace package name)",
|
|
|
|
type
|
|
| String
|
|
| doc "Project type: 'rustelo-app' | 'rustelo-plugin'",
|
|
|
|
description
|
|
| String
|
|
| doc "Human-readable description"
|
|
| optional,
|
|
},
|
|
|
|
PathConfig = {
|
|
content
|
|
| String
|
|
| doc "Content root, relative to manifest location",
|
|
|
|
config
|
|
| String
|
|
| doc "NCL configuration root (site/config/index.ncl entrypoint)",
|
|
|
|
routes
|
|
| String
|
|
| doc "Routes configuration directory",
|
|
|
|
i18n
|
|
| String
|
|
| doc "FTL locales root directory",
|
|
|
|
assets
|
|
| String
|
|
| doc "Public static assets directory served as-is",
|
|
|
|
ui
|
|
| String
|
|
| doc "UI configuration root (menus, themes, footer — now in NCL)",
|
|
|
|
build_output
|
|
| String
|
|
| doc "Leptos site output directory",
|
|
|
|
wasm_output
|
|
| String
|
|
| doc "WASM package output directory",
|
|
},
|
|
|
|
# PAP: language and content-type discovery is always config-driven.
|
|
# Use 'auto' to discover from site/config/index.ncl [site.languages]
|
|
# and [content_types]. Explicit lists are allowed for restricted deploys.
|
|
DiscoveryConfig = {
|
|
default_lang
|
|
| String
|
|
| doc "Default language ISO 639-1 code (e.g. 'en')",
|
|
|
|
languages
|
|
| String
|
|
| doc "'auto' = discovered from site config | explicit = 'en,es,fr'",
|
|
|
|
content_types
|
|
| String
|
|
| doc "'auto' = discovered from site config | explicit = 'blog,recipes'",
|
|
},
|
|
|
|
# Deployment values that vary between environments.
|
|
# Resolved from environment variables at evaluation time via std.env.try_var.
|
|
# Credentials and secrets belong ONLY in environment variables, never here.
|
|
DeploymentConfig = {
|
|
base_url
|
|
| String
|
|
| doc "Site base URL — set BASE_URL env var to override",
|
|
|
|
content_url
|
|
| String
|
|
| doc "URL prefix for content serving (e.g. '/r')",
|
|
|
|
content_root
|
|
| String
|
|
| doc "Content URL path segment (matches content_url without leading slash)",
|
|
|
|
cache_path
|
|
| String
|
|
| doc "Runtime cache directory name",
|
|
|
|
api_endpoint
|
|
| String
|
|
| doc "API base path — set API_ENDPOINT env var to override",
|
|
|
|
database_url
|
|
| String
|
|
| doc "Database connection URL — set DATABASE_URL env var to override",
|
|
},
|
|
|
|
BuildConfig = {
|
|
leptos_output_name
|
|
| String
|
|
| doc "Leptos output name (must match [[workspace.metadata.leptos]].name in Cargo.toml)",
|
|
|
|
site_addr
|
|
| String
|
|
| doc "Development server listen address",
|
|
|
|
reload_port
|
|
| Number
|
|
| doc "Hot-reload WebSocket port",
|
|
|
|
debug
|
|
| Number
|
|
| doc "Debug verbosity: 0=off 1=basic 2=verbose 3=trace routes 4=deep trace"
|
|
| default = 0,
|
|
|
|
cache_build_path
|
|
| String
|
|
| doc "Build cache subdirectory name (placed under target/)",
|
|
},
|
|
|
|
# Cargo feature flags for this implementation.
|
|
# These control compile-time code inclusion — distinct from runtime feature flags.
|
|
# The generator (cargo rustelo new) sets these from --features arguments.
|
|
FrameworkFeatures = {
|
|
auth
|
|
| Bool
|
|
| doc "JWT/OAuth2/2FA authentication"
|
|
| default = true,
|
|
|
|
content
|
|
| Bool
|
|
| doc "Markdown/static content management"
|
|
| default = true,
|
|
|
|
email
|
|
| Bool
|
|
| doc "SMTP email support"
|
|
| default = false,
|
|
|
|
tls
|
|
| Bool
|
|
| doc "HTTPS/TLS via rustls"
|
|
| default = false,
|
|
|
|
metrics
|
|
| Bool
|
|
| doc "Prometheus metrics endpoint"
|
|
| default = false,
|
|
|
|
crypto
|
|
| Bool
|
|
| doc "AES-GCM encryption for sensitive config values"
|
|
| default = false,
|
|
|
|
# Allow implementation-specific feature flags without breaking the contract
|
|
..
|
|
},
|
|
|
|
RusteloManifest = {
|
|
manifest
|
|
| ManifestMeta,
|
|
|
|
project
|
|
| ProjectInfo,
|
|
|
|
paths
|
|
| PathConfig,
|
|
|
|
discovery
|
|
| DiscoveryConfig,
|
|
|
|
deployment
|
|
| DeploymentConfig,
|
|
|
|
build
|
|
| BuildConfig,
|
|
|
|
features
|
|
| FrameworkFeatures
|
|
| doc "Cargo feature flags enabled for this implementation"
|
|
| optional,
|
|
},
|
|
}
|