The public site for CrateWorks — a workbench of open-source tools built around the RO-Crate API specification.
Built with Astro, Tailwind CSS 4, and content collections.
src/
├── components/ # Astro components (Hero, Workbench, Logo, …)
├── content/
│ ├── governance/ # Imported from github/MVG; user-edited
│ └── tools/ # One markdown file per tool tile
├── layouts/ # Layout.astro (header, footer, head)
├── pages/
│ ├── index.astro # Front page
│ └── governance/ # /governance/ hub + [...slug].astro doc renderer
├── styles/global.css # Tailwind 4 entry + design tokens
└── content.config.ts # Collection schemas
pnpm install
pnpm dev # → http://localhost:4321| Command | Action |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Build static site to ./dist/ |
pnpm preview |
Preview the built site |
pnpm lint:biome |
Biome lint + format check |
pnpm lint:knip |
Knip unused-code check |
pnpm lint:types |
TypeScript --noEmit |
pnpm lint:astro |
astro check (template + content) |
The site deploys to GitHub Pages on every push to main via
.github/workflows/deploy.yml. The workflow:
- Installs deps with
pnpm install --frozen-lockfile. - Runs all four lint/typecheck commands.
- Builds the static site.
- Publishes
dist/to thegithub-pagesenvironment.
Pull requests run the same lint + build job (no deploy) as a status check.
Custom domain. public/CNAME contains crate-works.org, which GitHub Pages
serves as the canonical host. DNS for crate-works.org must point at the
GitHub Pages IPs (or CNAME to <owner>.github.io) — that is configured
outside this repo.
First-time setup. In the repo's Settings → Pages, set the source to "GitHub Actions". Subsequent deploys are automatic.
See CONTRIBUTING.md for what lives where (tool tiles, blog posts, governance docs), style conventions, and licensing.