Static marketing site for BlueCollar Systems — precision software for fabricators, welders, and detailers.
| Product | Description | Link |
|---|---|---|
| Steel Logic | AISC v16.0 Structural Steel Shapes Reference (mobile app) | Coming soon |
| Free Shape Packs | Public-domain SketchUp + DXF/DWG shape packs | Shapes Hub |
| SketchUp PDF Importer | Vector-accurate PDF geometry import for SketchUp | GitHub |
| FreeCAD PDF Importer | PDF vector import workbench for FreeCAD | GitHub |
- Vanilla HTML5
- Custom utility-class CSS (Tailwind-style naming, zero build dependencies)
- No JavaScript framework
Open index.html in a browser. No build step required.
Deployed to Cloudflare Pages (project bluecollar-website) via GitHub Actions workflow .github/workflows/website-ci.yml.
- Pushes to
mainrunwebsite-ci. static-checksmust pass beforedeploy-pagesruns.deploy-pagesrunstools/sync_repo_metadata.py, then publishes the static tree with Wrangler.- Pushes to
main/masteralso runauto-releaseto bumpVERSIONand publish a GitHub Release snapshot zip. - A cron (
17 */6 * * *) re-syncs release metadata even if no product repo fired a dispatch.
See RELEASE_CHECKLIST.md for app launch/update steps (Google Play + iOS).
Product versions and ZIP download URLs are not hardcoded in HTML for versioned /releases/download/v… paths. Instead:
| Layer | Role |
|---|---|
repo-metadata.json |
Build-time snapshot of each GitHub repo’s releases/latest (generated in CI). |
tools/sync_repo_metadata.py |
Fetches GitHub API data and optionally stamps data-repo-version fallbacks in *.html. |
nav.js |
Client-side enhancement: loads /repo-metadata.json (Cache-Control: no-store) and updates data-repo-version, data-repo-release-link, and data-repo-asset-link elements. |
| Static HTML fallbacks | releases/latest links and version badges work if JavaScript or metadata fetch fails. |
Tracked repos: PDF-Importer-SketchUp, PDF-Importer-FreeCAD, PDF-Importer-Blender, PDF-Importer-LibreCAD, Structural-Steel-SU-Shapes, Structural-Steel-DXF-DWG-Shapes, and Steel-Shapes (kept only if the API token can read it).
- Importer repo
auto-release(or manualrelease: published) creates/updates a GitHub Release. - Same pipeline dispatches
repository_dispatchtoBlueCollar-Systems/BlueCollar-Websitewith event typeproduct-release(orproduct-update). website-cideploy-pagesre-runssync_repo_metadata.pyand deploys to Cloudflare Pages.
Importer workflows: .github/workflows/auto-release.yml and .github/workflows/notify-website-deploy.yml in each product repo.
Configure under Settings → Secrets and variables → Actions:
| Secret | Required | Purpose |
|---|---|---|
CLOUDFLARE_ACCOUNT_ID |
Yes (deploy) | Cloudflare account for Pages API / Wrangler. |
CLOUDFLARE_PAGES_API_TOKEN |
Yes (deploy) | Preferred. Needs Account → Cloudflare Pages: Edit and Account Settings: Read. Alternatives: CLOUDFLARE_API_TOKEN, CF_API_TOKEN. |
REPO_METADATA_TOKEN |
Recommended | PAT or fine-grained token that can read public org repos (and any private product repos). Used only in CI to call api.github.com for sync_repo_metadata.py. Scope: public_repo (classic) or repository read on each product repo. If missing, workflow falls back to GITHUB_TOKEN (same-repo only; org repos may 404). |
Do not put GitHub or Cloudflare tokens in HTML, nav.js, or committed config.
| Secret | Required | Purpose |
|---|---|---|
WEBSITE_DISPATCH_TOKEN |
Recommended | PAT or fine-grained token allowed to trigger repository_dispatch on BlueCollar-Systems/BlueCollar-Website. Classic PAT: repo scope (or fine-grained: Actions: Read and write on BlueCollar-Website). Aliases accepted in workflows: BLUECOLLAR_WEBSITE_DISPATCH_TOKEN, REPO_DISPATCH_TOKEN. |
If WEBSITE_DISPATCH_TOKEN is unset, releases still publish on GitHub but the website only updates on the 6-hour cron, the next main push, or manual workflow_dispatch.
Dispatch payload (informational; website workflow re-syncs all repos, it does not merge this JSON into the site):
{
"source_repo": "BlueCollar-Systems/PDF-Importer-SketchUp",
"source_event": "auto-release",
"source_ref": "refs/heads/main",
"source_sha": "<commit>",
"release_tag": "v3.7.2",
"release_name": "v3.7.2",
"release_url": "https://github.com/BlueCollar-Systems/PDF-Importer-SketchUp/releases/tag/v3.7.2"
}Event types listened by website-ci: product-release, product-update, steel-shapes-release, steel-shapes-update.
MIT License. See LICENSE for details.