Files
Tautvydas Derzinskas 358dfc1a03 feat: system notifications updates, Thingport grab in System health check, node 24+ (#52)
* feat: update system notifications

* feat: add Thingport grab to system health check

* ci: upgrade to Node.js 24 and centralize version management
2026-10-17 10:44:13 +02:00

40 lines
2.2 KiB
Markdown

# Thingport website
The product site, docs and blog, published to GitHub Pages by
[`.github/workflows/web-pages.yml`](../.github/workflows/web-pages.yml). Built with [Astro](https://astro.build) as
plain static HTML. The little JavaScript there is: the theme toggle, copy buttons, and the seasonal logo, which
the visitor's browser picks by date (the pages are built ahead of time).
```bash
cd web
npm install
npm run dev # http://localhost:4321/
npm run build # static output in dist/
npm run check # type-check
```
Requires Node 24+ (see the root `.nvmrc`).
## Where the content lives
- **Docs are not copied here.** The docs pages render the repo's own Markdown (`docs/`, `extension/README.md`,
`bridge/README.md`, `CONTRIBUTING.md`) at build time. Edit those files, not the site. The list of pages, with their
titles, sidebar groups and SEO descriptions, is `DOCS` in [`src/lib/site.mjs`](src/lib/site.mjs). Relative links in
those files are rewritten by [`src/lib/rehypeRepoLinks.mjs`](src/lib/rehypeRepoLinks.mjs): links to another rendered
doc stay on the site, and everything else points to GitHub.
- **The Docker Compose install page** ([`src/pages/docs/install.astro`](src/pages/docs/install.astro)) embeds the real
`docker-compose.deploy.yml` and `.env.example`.
- **Blog posts** are Markdown files in [`src/content/blog/`](src/content/blog/). Frontmatter: `title`, `description`,
`pubDate`, and optionally `updatedDate`, `tags` and `draft: true`. Link to site pages root-relative
(`/docs/install/`); the base path is added automatically.
- **Logos, fonts, favicons and screenshots** come from `frontend/`, so the site always matches the app.
- **Colours** mirror `THEME_DEFS` in `frontend/src/theme.ts`, as CSS variables in
[`src/styles/global.css`](src/styles/global.css). The site follows the visitor's system light/dark setting, and the
header button overrides it.
## URL and custom domain
The site is served from `https://thingport.net/` (a custom domain set in the repo's Pages settings). In CI the URL
and base path come from GitHub Pages itself; local and PR builds default to that domain with base `/`. Override with
`SITE_URL=https://example.com BASE_PATH=/sub-path npm run build`.