Updated 2026-10-28
Deployment
Build, hosting, domain, and analytics setup.
Build
The site is built as static HTML at build time by Next.js:
pnpm build
Next.js prerenders the home page, the documentation pages, the sitemap, and
the static assets for all seven locales at build time. Serving them still
requires a runtime that executes the locale-negotiation edge middleware
(apps/web/src/proxy.ts) and the security headers, so the site targets
Vercel with the Next.js preset; a plain static host would lose locale
negotiation.
Hosting
Production hosting is Vercel:
- framework preset: Next.js
- root directory:
apps/web - build command:
pnpm build
The domain is ella.yuricunha.com, configured in
apps/web/src/data/site.ts and the app metadata, which drives canonical
URLs, Open Graph, and the sitemap.
Documentation routes
/docsindex of available documentation pages, per locale;/docs/<slug>individual documentation page, per locale.
Both are static routes generated at build time. The default locale
(English) has no URL prefix; other locales carry their prefix, for example
/pt/docs or /ja/docs.
Localization routes
- Default locale English:
https://ella.yuricunha.com - Other locales:
https://ella.yuricunha.com/<locale>
Each page declares hreflang alternates for all seven locales, and the
sitemap lists every locale variant.
Analytics
Umami is prepared but inert by default. The Analytics component only renders when both environment variables are present at build time:
NEXT_PUBLIC_UMAMI_SRC=https://your-umami-host/script.js
NEXT_PUBLIC_UMAMI_WEBSITE_ID=your-website-id
Without them, the site ships zero analytics JavaScript. No placeholder IDs are committed.
Quality gates
No CI server watches pushes anymore: the GitLab pipelines were retired and the GitLab remote is a mirror only. Run the gates before pushing:
pnpm type-check && pnpm lint && pnpm test && pnpm format:check && pnpm build
pnpm audit --prod must also come back clean. Vercel builds the production
bundle on deploy; because the pages are prerendered, a green build is the
gate.
SEO
- metadata, Open Graph, Twitter cards, canonical, and JSON-LD in the locale layout;
robots.txtand the sitemap are generated into the build;- the social card is
public/og.png(1200x630, generated with the Geist fonts from a rendered HTML template); - every locale gets its own metadata and hreflang alternates.