7bf10b6a126e797844982410435e3b5bc8ee4cc3
- project.inlang/settings.json with locales [de, en], baseLocale de.
- messages/{de,en}.json hold the strings (tagline, blog labels, etc.).
- vite.config.ts: paraglideVitePlugin compiles to src/paraglide/
(gitignored) on dev/build. Strategy: url → cookie →
preferredLanguage → baseLocale. URL pattern keeps German at /:path
(unprefixed) and English at /en/:path so existing URLs stay valid.
- server.tsx wraps the handler in paraglideMiddleware so AsyncLocalStorage
carries the per-request locale into SSR.
- router.tsx adds rewrite { input: deLocalizeUrl, output: localizeUrl }
so route matching stays locale-agnostic — the router sees /blog while
URLs show /en/blog.
- cms.ts narrows getLocale()'s union back to the de|en pair the CMS
supports, used as the default for find/findGlobal calls.
- Components/routes switch to m.foo() for user-visible strings; date
formatting picks de-DE / en-GB from getLocale().
- Root html lang reads getLocale() so the document language flips per
request.
Known minor: TanStack Start's { title } meta entry still serves the base
locale value (og:title and the description meta are localized correctly).
Will track separately.
@unom/website
The unom.io marketing site. TanStack Start + Bun, deployed to home-main-2.
Development
bun install
bun run dev
Visit http://localhost:3000.
Production
The repo is built into a container image (git.unom.io/unom/website) by Gitea
Actions on push to main, then deployed via SSH to home-main-2. The
container listens on port 3000 inside the network and is exposed on host port
3200, which Caddy on home-reverse-proxy-1 reverse-proxies for unom.io and
www.unom.io.
Run the production image locally:
docker compose -f compose.production.yml pull
docker compose -f compose.production.yml up -d
Required CI secrets
Set on the unom/website repo in Gitea Actions:
| Secret | Purpose |
|---|---|
REGISTRY_USER / REGISTRY_TOKEN |
Push to git.unom.io container registry |
DEPLOY_HOST / DEPLOY_USER / DEPLOY_PORT / DEPLOY_SSH_KEY |
SSH target on home-main-2 (private key matching the unom-ci-deploy authorized key) |
Description
Languages
TypeScript
80%
CSS
17.5%
Dockerfile
2.5%