The documentation site for every Temco Controls product: six sections, one folder per product, one page per version.
It is a plain front-end project — Vite, React and Fluent UI — and it owns everything the site needs: the screens, the theme, the content, the search index and the deployment. Nothing here knows about the editor that publishes into it.
npm install
npm run client-dev # http://localhost:3003/#/t3000/ (hot reload)
npm run build # catalog + index + type-check + bundle → dist/
npm run serve # http://localhost:1011/ (what the built site looks like)
npm run check # type-check, content rules, lintnpm run build is the whole pipeline: scripts/catalog.mts compiles the Markdown and lists the versions,
scripts/search.mts writes the index, tsc type-checks, and vite build writes dist/.
/#/ Home — the six sections, and what changed lately
/#/documentation a section
/#/t3000/ a project
/#/t3000/1.0/ one version, its pages in reading order
/#/t3000/1.0/ports one page
/#/search?q=alarm search
Hash routing on purpose: GitHub Pages serves static files with no rewrites, so the same build works at /, under
/temco-learn/, and from localhost:1011.
Two kinds of page, one catalog:
| kind | where it comes from | who writes it |
|---|---|---|
| authored | content/<project>/<version>/*.md |
a person, in Markdown with front matter |
| imported | public/imported/<project>/<version>/**/*.html |
a project's own build (docfx), copied verbatim |
---
title: Getting started
order: 10
description: Install the driver and prove the controller answers.
---
## Install the driver
Prose begins at `##`: the page title is the `#`.content/<project>/site.json names the product and the section it is listed under:
{ "title": "Test1", "section": "documentation", "summary": "What the product is, in one sentence." }npm run check enforces the rules a docs repo breaks silently: every page has a title, no two pages in a version share
one, prose starts at ##, and each version has a 00-index.md landing page.
Push to main; .github/workflows/pages.yml builds the site and deploys it to GitHub Pages
(https://temcocontrols.github.io/temco-learn/). The catalog and the search index are generated by npm run build — and
they are committed as well, so a fresh clone opens without building first.
The Temco platform's Learn module adds a build by copying it into public/imported/…, regenerating the catalog and
pushing — which is the same thing you would do by hand.
content/ the docs: site.json per project, a folder per version of Markdown
public/ catalog.json, search.json, content/*.json (generated) and imported/ (build output)
scripts/ catalog.mts, search.mts, check-content.mts
src/ the app: routes, theme, catalog reader, styles