From 34da3ec150dd0e66be3eccd18f826347f0382f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Pe=CC=81rez?= Date: Sat, 18 Jul 2026 01:01:47 +0100 Subject: [PATCH] =?UTF-8?q?en=20el=20outreach/site=20tenemos=20un=20aparta?= =?UTF-8?q?do=20con=20los=20/dominios=20(que=20por=20cierto=20no=20sale=20?= =?UTF-8?q?bien=20en=20ES=20con=20texto=20en=20ingl=C3=A9s)=20=20=20lo=20r?= =?UTF-8?q?elevante=20al=20respecto=20es=20que=20tenemos=20desarrollos=20s?= =?UTF-8?q?obre=20los=20dominios=20=20=20Persona=20-=20sitio=20web=20perso?= =?UTF-8?q?nal=20/Users/Akasha/Development/jpl/outreach/site=20=20=20Autor?= =?UTF-8?q?=C3=ADa=20-=20/Users/Akasha/Development/librosys=20=20=20Desarr?= =?UTF-8?q?ollador=20-=20el=20propio=20ontoref=20como=20gestor=20de=20proy?= =?UTF-8?q?ecto=20con=20el=20daemon=20y=20la=20UI=20=20=20Infraestructura?= =?UTF-8?q?=20-=20/Users/Akasha/Development/provisioning=20y=20sus=20works?= =?UTF-8?q?paces=20=20=20Para=20cada=20uno=20de=20ellos=20tenemos=20domini?= =?UTF-8?q?os=20DNS=20comprados=20y=20para=20cada=20uno=20de=20ellos=20nec?= =?UTF-8?q?esitamos=20=20=201)=20actualizar=20sites=20existentes=20como=20?= =?UTF-8?q?/Users/Akasha/Development/jpl/outreach/site=20=20=202)=20crear?= =?UTF-8?q?=20los=20sites=20siguiendo=20el=20mismo=20patr=C3=B3n=20de=20/U?= =?UTF-8?q?sers/Akasha/Development/ontoref/outreach/site=20=20=203)=20depl?= =?UTF-8?q?oy=20en=20el=20/Users/Akasha/Development/workspace/libre-wuji?= =?UTF-8?q?=20(algunos=20ya=20tienen=20deploy)=20=20=20Nos=20planteamos=20?= =?UTF-8?q?cu=C3=A1l=20ser=C3=ADa=20el=20mejor=20modo,=20si=20montar=20pla?= =?UTF-8?q?ntilla,=20crear=20un=20howto/mode/ADRs=20en=20ontoref=20para=20?= =?UTF-8?q?los=20site,=20crear=20un=20=20=20comando=20setup=20y=20luego=20?= =?UTF-8?q?usar=20las=20recetas=20de=20gesti=C3=B3n=20que=20mayormente=20s?= =?UTF-8?q?e=20han=20creado=20para=20el=20site=20de=20ontoref=20o=20vienen?= =?UTF-8?q?=20de=20su=20=20=20implementaci=C3=B3n.=20Muchas=20de=20las=20f?= =?UTF-8?q?eatures=20del=20site=20de=20ontoref=20se=20usar=C3=A1n=20en=20l?= =?UTF-8?q?os=20otro=20site=20que=20adem=C3=A1s=20deben=20tener=20ya=20un?= =?UTF-8?q?=20branding=20=20=20propio=20y=20una=20estructura=20ontoref=20c?= =?UTF-8?q?onstellation=20=20=20=C2=BF=20qu=C3=A9=20propones=20=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/justfile | 8 +++++++- site/scripts/build/gen-spine-pages.nu | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/site/justfile b/site/justfile index 9986459..009844f 100644 --- a/site/justfile +++ b/site/justfile @@ -19,6 +19,12 @@ default: # Start the HTMX-SSR dev server (auto-detects site/ in PWD) [no-cd] dev: + #!/usr/bin/env bash + export DATABASE_URL="${DATABASE_URL:-sqlite:data/dev.db}" + export HTMX_TEMPLATE_PATH="${HTMX_TEMPLATE_PATH:-htmx-templates}" + export RUSTELO_SITE_ROUTES="${RUSTELO_SITE_ROUTES:-site/config/routes}" + export SITE_BASE_URL="${SITE_BASE_URL:-https://ontoref.dev}" + export SITE_NAME="${SITE_NAME:-ontoref}" lsof -ti:3030 | xargs kill -9 2>/dev/null || true rustelo-htmx-server @@ -655,7 +661,7 @@ sync: templates htmx-assets rotator-assets content # it ran by hand. `graph` here is content_graph.json, a different artifact; the name collision is # exactly what let the omission read as covered. [no-cd] -sync-full: templates htmx-assets rotator-assets adr-pages expedientes informe catalog-content decks content glossary conceptos graph adr-map diagram about-json sync-artifacts check +sync-full: templates htmx-assets rotator-assets adr-pages expedientes informe catalog-content decks spine content glossary conceptos graph adr-map taglines diagram about-json sync-artifacts check # The nu generators own these four files in site/public/r (the deploy tree); the serve # tree needs the same copies. `content` does this too, so a standalone `just content` diff --git a/site/scripts/build/gen-spine-pages.nu b/site/scripts/build/gen-spine-pages.nu index 079b40c..7d6b9f6 100644 --- a/site/scripts/build/gen-spine-pages.nu +++ b/site/scripts/build/gen-spine-pages.nu @@ -47,6 +47,16 @@ def main [ for item in ($spine.doors | enumerate) { let d = $item.item let vp = (nickel export --format json $"($vp_dir)/($d.value_prop_id).ncl" | from json) + # Localized claim/problem_solved: use the optional `*_i18n` sibling for this + # lang WHEN it carries that lang key, else the canonical (English) scalar — + # so the 16 non-door vps (no sibling) and `en` (translations-only sibling) + # both fall back to the scalar. `get $col` on a dynamic name errors on a + # missing key, so presence is checked against `columns` first. Keeps the + # door pages bilingual without touching the Rust `ValueProp` struct. + let claim_i18n = ($vp.claim_i18n?) + let vp_claim = (if ($claim_i18n != null) and ($lang in ($claim_i18n | columns)) { $claim_i18n | get $lang } else { $vp.claim }) + let problem_i18n = ($vp.problem_solved_i18n?) + let vp_problem = (if ($problem_i18n != null) and ($lang in ($problem_i18n | columns)) { $problem_i18n | get $lang } else { $vp.problem_solved }) let label = ($d.label | get $lang) let line = ($d.line | get $lang) let blog_url = $"/blog?tag=($d.tag)" @@ -60,7 +70,7 @@ def main [ $"[Posts]\(($blog_url)\) · [Recipes]\(($recipes_url)\)" }) let prize_label = (if $is_es { "El premio, al entrar" } else { "The prize, once inside" }) - let excerpt = ($vp.problem_solved | lines | where ($it | str trim | is-not-empty) | first | str trim | str replace --all '"' "'") + let excerpt = ($vp_problem | lines | where ($it | str trim | is-not-empty) | first | str trim | str replace --all '"' "'") let cat_desc = (if $is_es { "Casos de uso e implementaciones de ontoref" } else { "Use cases and implementations of ontoref" }) let proj_dir = $"($content)/domains/($lang)/use-cases" @@ -100,9 +110,9 @@ category_published: true " }) - let body = $"($hook_block)**($vp.claim)** + let body = $"($hook_block)**($vp_claim)** -($vp.problem_solved) +($vp_problem) ---