The showcase + docs site for the dotfiles ecosystem — a nine-repo, three-layer terminal environment (Core → OS-native → Role).
Built with Astro, themed in Tokyo Night, and deployed to
GitHub Pages at https://gerrrt.github.io/dotfiles-web/.
| Page | Path | Purpose |
|---|---|---|
| Landing | / |
Hero, value props, the three-layer model, repo map, install |
| Getting started | /getting-started |
Per-platform install guide (macOS / Windows / Kali / Linux) |
| Architecture | /architecture |
The Core → OS-native → Role model, subtree rationale, loader |
| Changelog | /changelog |
Curated mirror of the per-repo CHANGELOG.md files |
npm install # install dependencies
npm run dev # local dev server at http://localhost:4321/dotfiles-web
npm run build # production build into dist/
npm run preview # preview the production build locallyContent is data-driven — edit these and the site updates:
src/data/site.ts— site name, owner, nav, GitHub linkssrc/data/repos.ts— the repository map / showcase cards (prose + status)src/data/install.ts— per-platform install steps
The changelog is no longer hand-edited: src/data/changelog.ts just re-exports
the entries parsed from each repo's CHANGELOG.md into generated.json (see below).
Styling lives in src/styles/global.css (Tokyo Night design tokens at the top).
The "by the numbers" strip, the per-card package counts, and the changelog are
not hand-typed — they come from src/data/generated.json, which
scripts/collect-metrics.mjs derives by reading the sibling repos (../dotfiles-core,
../dotfiles-Fedora, …). The changelog is parsed from each repo's CHANGELOG.md
(newest version block, Keep a Changelog format):
npm run metrics # checkout the sibling repos next to this one first
# or point it elsewhere:
DOTFILES_ROOT=/path/to/repos npm run metricsRegenerate and commit generated.json whenever Core or an OS repo changes. The script
is defensive: if the sibling repos aren't checked out (e.g. on the Pages CI runner,
which clones only this repo), it leaves the committed JSON untouched.
Pushing to main triggers .github/workflows/deploy.yml, which builds with Astro and
publishes to GitHub Pages. One-time setup: in the repo's
Settings → Pages, set Source to GitHub Actions.
The site is configured for a GitHub Pages project path in astro.config.mjs
(site + base). To serve from a custom domain or a user site (gerrrt.github.io),
set base: '/', update site, and add a public/CNAME for a custom domain.