All docs

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

  • /docs index 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.txt and 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.