let _concerns_lib = import "schemas/lib/concerns.ncl" in let _context_lib = import "schemas/catalog/context.ncl" in { RusteloWebsite = { context | _context_lib.ComponentContext | optional, name | String, namespace | String, catalog_ref | String | optional, # Full image reference without tag — e.g. reg.librecloud.online/ns/my-site image | String, image_tag | String | default = "latest", port | Number | default = 3000, domain | String, dns_zone | String, acme_email | String, cluster_issuer | String, # Gateway API sharing key for the public FIP gateway (e.g. librecloud-fip-wuji) gateway_fip | String, # Gateway resource name and namespace — must match the Cilium Gateway in the cluster gateway_name | String | default = "libre-wuji", gateway_ns | String | default = "kube-system", # K8s Secret name in the deployment namespace holding the registry pull credentials registry_secret | String | default = "regcred", # Rendering strategy. 'htmx_ssr ships a binary-only image (no WASM): the server # renders the full body and htmx drives interactivity from public/ assets. # 'leptos_hydration ships a WASM bundle under pkg/ that the client hydrates, # which requires the sync-pkg initContainer to keep the PV's pkg/ paired with # the server binary (server-fn hashes drift otherwise). render_mode | [| 'leptos_hydration, 'htmx_ssr |] | default = 'htmx_ssr, # cargo-leptos output-name — base name of the WASM/JS bundle served under pkg/. # Only meaningful when render_mode = 'leptos_hydration. leptos_output_name | String | default = "website", data_pvc | { enabled | Bool | default = false, size | String | default = "2Gi", # Mount path inside the container for SQLite and dynamic content mount_path | String | default = "/app/data", storage_class | String | default = "longhorn-retain", } | default = {}, # Additional env vars injected into the Deployment (non-secret) env | { _ : String } | optional, requires | { storage | { size | String, persistent | Bool } | optional, ports | Array { port | Number, exposure | [| 'public, 'private, 'internal |] | default = 'public, } | default = [], credentials | Array String | default = [], } | default = {}, provides | { service | String | optional, port | Number | optional, endpoints | Array String | default = [], } | default = {}, operations | { install | Bool | default = true, update | Bool | default = true, delete | Bool | default = true, health | Bool | default = true, } | default = {}, live_check | { strategy | [| 'k8s_pods, 'http_get |] | default = 'k8s_pods, scope | [| 'cp_only, 'all_nodes |] | default = 'cp_only, } | default = {}, concerns | _concerns_lib.ServiceConcerns | optional, .. }, }