DOC/ Actualizado el 2026-09-19
Despliegue
Build, hosting, dominio y configuración de analytics.
El sitio se construye como HTML estático en tiempo de build con Next.js:
pnpm build
Next.js prerenderiza la home, las páginas de documentación, el sitemap y los assets estáticos para los siete idiomas. No hay runtime de servidor, así que cualquier host estático funciona.
El hosting de producción es Vercel:
- framework preset: Next.js
- root directory:
apps/web - build command:
pnpm build
El dominio es ella.yuricunha.com, configurado en
apps/web/src/data/site.ts y en la metadata de la app, que dirige las URLs
canónicas, el Open Graph y el sitemap.
/docsíndice de páginas de documentación, por idioma;/docs/<slug>página individual de documentación, por idioma.
Ambas son rutas estáticas generadas en el build. El idioma por defecto
(inglés) no tiene prefijo de URL; los otros idiomas llevan su prefijo, por
ejemplo /pt/docs o /ja/docs.
- Inglés por defecto:
https://ella.yuricunha.com - Otros idiomas:
https://ella.yuricunha.com/<locale>
Cada página declara alternates hreflang para los siete idiomas, y el
sitemap lista cada variante.
Umami está preparado pero inerte por defecto. El componente Analytics solo se renderiza cuando ambas variables de entorno están presentes en el build:
NEXT_PUBLIC_UMAMI_SRC=https://tu-host-umami/script.js
NEXT_PUBLIC_UMAMI_WEBSITE_ID=tu-website-id
Sin ellas, el sitio envía cero JavaScript de analytics. No se commitean IDs de placeholder.
El pipeline de GitLab corre en main. Se crea con un perfil GitLab que
tiene verificación de identidad, porque GitLab.com se niega a correr jobs de
CI sin ella. Dispara con:
glab api --method POST \
"projects/isyuricunha%2Fella-mizuki/pipeline" -f "ref=main"
Verifica que el pipeline creado llegue a success: quality, build, SAST y
secret detection deben pasar antes de considerar verde el despliegue.
- metadata, Open Graph, Twitter cards, canonical y JSON-LD en el layout del locale;
robots.txty el sitemap se generan en el build;- la social card es
public/og.png(1200x630, generada con las fuentes Geist a partir de una plantilla HTML renderizada); - cada idioma recibe su propia metadata y alternates hreflang.