Portada de ATM Software Labs en trujillomingorance.com: presentación, sitios, páginas legales, marca, firma de correo y 404 de diagnóstico para subdominios sin uso.
Apex site for trujillomingorance.com: home, legal pages, brand kit, email signature and a diagnostic 404 for unmapped subdomains (ES · EN · CA).
trujillomingorance.com · Marca · Firma de correo · Licencia MIT
- Portada con presentación, lista de sitios y proyectos, en español (
/), inglés (/en/) y catalán (/ca/). - Páginas: sobre mí (
/sobre-mi,/en/about), privacidad, términos, marca (/brand/) y generador de firma de correo (/firma/). - Marca común: logotipos en SVG (símbolo, wordmark y lockups en claro y oscuro) y
brand/tokens.css, que copian el resto de webs. - Redirecciones de host en el borde:
savings.yfinance.→savings.trujillomingorance.com;guides.→guides.trujillomingorance.com.login.→ portal My Apps de Microsoft del tenant;id.,auth.ysecurity.→ My Account.- Rutas desconocidas del ápice →
labs.trujillomingorance.com.
- 404 de diagnóstico: un subdominio que no está en el catálogo recibe una página con Ray ID, centro de datos, protocolo y enlaces a los servicios que sí existen.
- Enlace «Panel interno» para cuentas internas de Microsoft Entra ID.
| Capa | Tecnología |
|---|---|
| Frontend | HTML generado con scripts de Node (site/), CSS y JavaScript sin framework |
| Hosting | Cloudflare Pages (public/) |
| Borde | Pages Functions: _middleware.js para redirecciones y 404 de diagnóstico |
| Marca | SVG generados con brand/build_logo.py |
| CI | GitHub Actions: pruebas en cada push y PR |
flowchart LR
U["Navegador"] --> MW["Pages Functions · _middleware<br/>HTML y rutas desconocidas"]
U -->|CSS, JS, assets, brand| P["Estáticos<br/>(sin Functions)"]
MW -->|savings. · guides.| R1["Redirección 301"]
MW -->|login. · id. · auth.| R2["Portales de Microsoft"]
MW -->|ruta desconocida del ápice| L["labs.trujillomingorance.com"]
MW -->|subdominio sin catálogo| D["404 de diagnóstico"]
MW --> P
_routes.json saca de Functions los CSS, JS, /assets/*, /brand/* e iconos, así que solo el HTML y las rutas desconocidas pasan por el middleware.
La carpeta ingress/ contiene una versión del 404 de diagnóstico como Worker independiente (atm-edge-ingress). Ahora mismo no está desplegada: lo resuelve el middleware de Pages.
- Cabeceras en
_headersy en el middleware: CSP (scripts propios y la analítica de Cloudflare;connect-srclimitado a los sitios del dominio), HSTS con preload,X-Frame-Options: DENY,nosniff, Referrer-Policy y Permissions-Policy. /favicon.icoredirige a un archivo versionado porque la caché de la zona ignora la query en esa ruta.
Requisitos: Node.js ≥ 20.
git clone https://github.com/ATM-Software-Labs/domain-root.git && cd domain-root
npm run build:site # regenera las páginas de public/
npm test # node --test
npx wrangler pages dev public # http://localhost:8788| Comando | Qué hace |
|---|---|
npm run build:site |
Genera portada y páginas en cada idioma |
npm test |
Pruebas de rutas, redirecciones y páginas |
npm run deploy |
wrangler pages deploy public --project-name=domain-root |
El proyecto de Cloudflare Pages domain-root está conectado a GitHub: cada push a main publica en trujillomingorance.com. No necesita secretos.
| Nombre | Tipo | Uso |
|---|---|---|
CATALOG |
binding KV, opcional | Catálogo de subdominios para el 404 de diagnóstico |
EDGE_CATALOG_JSON |
variable, opcional | El mismo catálogo en JSON. Sin ninguno de los dos se usa el del código |
public/ páginas generadas, _headers, _redirects, _routes.json, css/, js/, assets/, brand/
functions/ _middleware.js, rutas-hub.js, lib/diagnostico.js
site/ generadores de la portada y las páginas legales
brand/ logotipos SVG y script de generación
ingress/ Worker de diagnóstico (no desplegado)
test/ pruebas con node --test
docs/ banner y capturas
MIT © 2026 Alberto Trujillo Mingorance.
© 2026 ATM Software Labs · trujillomingorance.com

