The public documentation site for Gatherstead, built with Astro + Starlight and published to GitHub Pages at docs.gatherstead.app.
The user-facing guide lives here (as the canonical source); the engineering docs under the
repo's docs/ folder stay repo-internal.
pnpm install
pnpm dev # http://localhost:4321
pnpm build # output to dist/
pnpm preview # serve the built site locallyThe rest of the monorepo uses pnpm; this site is a standalone pnpm project (its own
package.json) and is intentionally excluded from the .NET/Nuxt build gates.
- Pages are MDX under
src/content/docs/. The guide lives insrc/content/docs/guide/. - Sidebar order comes from each page's
sidebar.orderfrontmatter; the sidebar groups are configured inastro.config.mjs.
Each section is tagged with the lowest role that can use it, via the <AccessBadge> component
placed directly under the heading:
## Setting up properties
<AccessBadge level="manager" />Valid level tokens (the stable vocabulary): everyone | member | coordinator | manager | owner.
The role filter lives once in the left navigation, injected via a Starlight
component override: astro.config.mjs
maps components.Sidebar → src/components/DocsSidebar.astro, which renders <RoleFilter />
above the default sidebar. It reads each section's data-access token and hides sections above the
reader's chosen role — in the page body and in the on-this-page table of contents — persisting
the choice in localStorage. To make a section filterable, give it a heading immediately
followed by an <AccessBadge>. (Pages no longer include <RoleFilter /> themselves.)
.github/workflows/docs.yml builds this folder and deploys it to GitHub Pages on any push to
main that touches docs-site/**. It can also be run manually (workflow_dispatch).
- Enable Pages: repo Settings → Pages → Build and deployment → Source: GitHub Actions.
- Custom domain (DNS): add a
CNAMErecorddocs→jayceslayn.github.ioat the DNS provider forgatherstead.app. Thepublic/CNAMEfile pins the domain on each deploy. - HTTPS: once DNS resolves, tick Enforce HTTPS in Settings → Pages.
- Commit
pnpm-lock.yamlandpnpm-workspace.yaml— CI installs with--frozen-lockfileand honours theallowBuildsallowlist (esbuild, sharp) for native build scripts.