The public landing page for SpaceWorks, free self-hosted software for makerspaces and tool libraries.
It is a static site: styles.css, site.js, hero.js, self-hosted fonts in fonts/ and brand assets in
assets/, plus pages generated by build.py. There is no framework and no build step at runtime, so any
static host works (GitHub Pages, Netlify, a plain web server).
Edit index.template.html or the data in content/, then rebuild:
python build.pybuild.py generates every page and crawler file from one source:
| Output | From |
|---|---|
index.html |
index.template.html, content/site.json, content/faq.json, content/products.json |
<product>/index.html (inventory, machines, events, bookings, organization, workspace, mobile) |
content/products.json |
sitemap.xml, robots.txt, 404.html |
the page list and content/site.json |
llms.txt, llms-full.txt |
the same product facts and FAQs, as plain text for AI assistants |
CNAME |
only when content/site.json url is a custom domain |
Each page gets a canonical URL, Open Graph and Twitter tags, and a JSON-LD graph (Organization, WebSite, SoftwareApplication, SoftwareSourceCode, BreadcrumbList and FAQPage). The FAQ text on a page and in its structured data come from the same entries, so they cannot drift apart. It also inserts the approved logo lockups and the QR code on the sample loan record, and checks that local asset references exist. The favicon and other brand exports are checked in separately. The QR code encodes the main repository; regenerate it with:
npx qrcode@1.5.4 -t svg -e M -m 0 -o assets/qr.svg "https://github.com/SpaceWorks-Labs/SpaceWorks"Commit content/, the template and every generated file.
Run python3 -m unittest test_build.py to check that the export is complete, current and reproducible,
that no page links to the old SpaceWorks-HQ organisation, and that every page's metadata and structured
data are valid.
The site URL lives in one place: url in content/site.json. To serve it from spaceworkslabs.dev:
- Point DNS at GitHub Pages:
Arecords for185.199.108.153,185.199.109.153,185.199.110.153and185.199.111.153(and the matchingAAAArecords2606:50c0:8000::153to8003::153), plus awwwCNAMEtospaceworks-labs.github.io. - Set
"url": "https://spaceworkslabs.dev/", runpython build.py(it writesCNAME) and commit. - In the repository's Pages settings, wait for the certificate and turn on Enforce HTTPS
(
.devdomains only work over HTTPS), then submithttps://spaceworkslabs.dev/sitemap.xmlin Google Search Console and Bing Webmaster Tools.
Until then the site stays at https://spaceworks-labs.github.io/SpaceWorks-Website/. On that address
crawlers ignore robots.txt (it is only read at a host's root), so submit the sitemap directly.
Every statement on a product page comes from that product's README. When an app ships a release or
changes what it does, update its entry in content/products.json (status, version, features, FAQs) and
updated in content/site.json, then rebuild.
python -m http.server 5100Then open http://localhost:5100/. The site uses the cream brand theme for every visitor.
hero.js brings the inventory concept fully into view, holds it, then zooms from its center until
the white content fills the screen. The next section's text enters after the zoom finishes. Reduced-motion
preferences and short viewports use the normal document flow. Run node test_hero.cjs for its focused
entry, reveal, reverse and fallback checks.
The browser terminal preview accepts typing at the blinking cursor. Entering tinkerhub and pressing
Enter responds with six sebin; it does not execute commands.
Run node test_terminal.cjs to check input handling.
Run node test_site.cjs to check clipboard feedback and mobile menu navigation.
Everything on the page describes the real product, so keep it in step with the main repository:
- The area presets and the installer summary in the terminal follow
scripts/setup-area-questions.sh(area labels, their order, and theevents/bookings/makerspaceedition rule). - The sample loan follows the request workflow: requested, accepted, issued with a box QR scan and a photo, returned with a photo and a note.
- The version line in the footer comes from
hub.versionandhub.releasedincontent/site.json; keep it in step with the latest release. - Deployment locations and the combined 1,000+ member count were supplied by the project owner;
logo provenance is recorded in
assets/deployments/README.md.
GNU Affero General Public License v3 (AGPL-3.0-or-later), matching SpaceWorks.
Font licensing and provenance are documented in fonts/README.md.