A static, front-end-only website that hosts the CM Tools → Equipment Overview page — browse equipment categories, classes, makes, models, rate history (charts), photos, and other details.
This is a read-only public site. There is no login, no backend, and no database. All
equipment data is bundled as static JSON under public/equipment_data/
and all photos are bundled under public/equipment_photos/.
- React 18 + Vite 7
- react-router-dom 7 (
BrowserRouter) - react-bootstrap / bootstrap
- d3 (sunburst visualization)
- chart.js + react-chartjs-2 (rate history charts)
npm install
npm run dev # http://localhost:3000npm run build # outputs to dist/ (also copies index.html -> 404.html for SPA routing)
npm run previewDeployment is automated via GitHub Actions (.github/workflows/deploy.yml):
- Push to the
mainbranch. - The workflow runs
npm ci && npm run buildand publishesdist/to GitHub Pages. - In the repository settings, set Settings → Pages → Build and deployment → Source to GitHub Actions.
The custom domain is configured in public/CNAME (shoveldove.com). Vite copies
public/ into dist/, so the CNAME file is published automatically. Point the domain's DNS at
GitHub Pages and enable the custom domain in Settings → Pages.
The build copies index.html to 404.html so that deep links (e.g.
/cm-tools/equipment-overview) resolve correctly on GitHub Pages.
The static data files in public/equipment_data/ are point-in-time exports:
equipment_categories.jsonall_standard.jsonall_misc.jsonall_photos.jsondate_info.json
Photos live in public/equipment_photos/. To refresh, regenerate these files and replace them,
then rebuild and redeploy.