# continuum-3d-site Landing page for continuum-3d.com. Eleventy + Pug + Tailwind CSS, with a small JSON-based i18n setup (`src/locales/en.json`, `src/locales/pl.json`). - English (the default language) lives at `src/en/index.pug` and builds to `/`. - Every other language lives at `src//index.pug` and builds to `//` (e.g. Polish: `src/pl/index.pug` -> `/pl/`). - The page markup is shared in `src/_includes/home.pug`; all copy is in `src/locales/.json`. - To add a language: copy `src/locales/en.json` to `src/locales/.json`, translate it (including `lang_name`, the language's own name), and add a `src//index.pug` with `lang: ` and `permalink: //` in its front matter that includes `../_includes/home.pug`. The footer language switcher and the `hreflang` tags pick it up automatically. - Site-wide settings (domain, contact address, default language) are in `src/_data/site.json`. The contact form opens the visitor's mail client addressed to `contactEmail`. ## Develop ``` npm install npm run dev ``` ## Build ``` npm install npm run build ``` Output goes to `dist/`. ## Deploy Every push to `main` builds the site and publishes `dist/` (zipped) as the asset on a Gitea Release tagged `deploy`, using the automatic per-job `GITEA_TOKEN` — no secrets to configure. A separate `site-deployer` watcher container on octo-winsrv polls that release (`releases/tags/deploy`) every ~45s and, when it changes, extracts it into `/mnt/e/sites/continuum-3d-com/`, which Caddy serves as the document root for `continuum-3d.com`. No SSH keys or admin credentials are involved — the watcher only has filesystem access to `/mnt/e/sites`, nothing else on the host. Manual deploy still works if you need it immediately (bypasses the watcher): ``` npm run build scp -r dist/* :/mnt/e/sites/continuum-3d-com/ ```