build / build (push) Successful in 2m51s
Implement the "Desktop dark" Penpot design: nav, hero, about, products
teaser and contact form, with the exported logo and wave artwork and
self-hosted Poppins, Roboto Flex and Chillax fonts.
- Shared page markup in _includes/home.pug; copy in locales/{en,pl}.json
- Footer language switcher and hreflang tags generated from the locales
- Contact form composes a mailto: to the address in _data/site.json
- Stacked layout below 1024px
53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# 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/<lang>/index.pug` and builds to `/<lang>/`
|
|
(e.g. Polish: `src/pl/index.pug` -> `/pl/`).
|
|
- The page markup is shared in `src/_includes/home.pug`; all copy is in
|
|
`src/locales/<lang>.json`.
|
|
- To add a language: copy `src/locales/en.json` to `src/locales/<lang>.json`,
|
|
translate it (including `lang_name`, the language's own name), and add a
|
|
`src/<lang>/index.pug` with `lang: <lang>` and `permalink: /<lang>/` 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/* <host>:/mnt/e/sites/continuum-3d-com/
|
|
```
|