Skip to content

Repository files navigation

dotgibsonCILast CommitContributorsForksStargazersIssuesMIT License


Logo

🌐 dotfiles-web

The public showcase and documentation hub for the whole system β€” Astro, Tokyo Night, GitHub Pages.
Explore the docs Β»

View Demo Β· Report Bug Β· Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Developing
  4. Contributing
  5. License
  6. Contact

About The Project

dotfiles-web is the public showcase + documentation hub for the dotgibson dotfiles system β€” an eleven-repo, three-layer terminal environment (Core β†’ OS-native β†’ Role). It documents the system rather than configuring a machine, so it is not itself one of the three layers. Built with Astro, themed in Tokyo Night, and deployed to GitHub Pages at dotgibson.github.io/dotfiles-web.

The site is data-driven and largely source-derived: the showcase cards, the per-repo docs pages, the "by the numbers" strip, and the changelog are generated from src/data/* and from the sibling repos β€” so the docs can't silently drift from the code they describe.

Page Path Purpose
Landing / Hero, the three-layer model, the repo map, install
Getting started /getting-started Per-platform install guide
Architecture /architecture The layer model, subtree rationale, the loader, deep dives
Docs hub /docs Concepts, guides, reference, and a generated page per repo
Changelog /changelog A mirror of each repo's CHANGELOG.md

Languages

  • TypeScript
  • Astro
  • JavaScript

Tools

  • Astro
  • Node.js
  • GitHub Pages

(back to top)

Getting Started

Prerequisites

Node.js (with npm). The site is a standard Astro project β€” no global tooling beyond that.

Installation

git clone https://github.com/dotgibson/dotfiles-web ~/dotfiles-web
cd ~/dotfiles-web
npm install
npm run dev        # local dev server at http://localhost:4321/dotfiles-web

(back to top)

Developing

npm run dev        # local dev server
npm run build      # production build into dist/
npm run preview    # preview the production build
npm run check      # astro check (types + content collections)

Content is data-driven β€” edit these and the site updates:

  • src/data/site.ts β€” site name, owner, nav, GitHub links
  • src/data/repos.ts β€” the repository map / per-repo pages (prose + status)
  • src/data/install.ts β€” per-platform install steps
  • src/content/docs/**/*.md β€” the documentation hub pages

The "by the numbers" strip, per-card package counts, the changelog, the Config explorer's baked files, and the /purple corpus + detection-coverage tables are not hand-typed β€” four collectors under scripts/ derive them from the sibling repos into src/data/:

file collector source repo
generated.json collect-metrics.mjs the ten dotfiles repos
snippets.json collect-snippets.mjs the OS repos' config files
corpus.json collect-corpus.mjs htpx
coverage.json collect-coverage.mjs dotfiles-Defense

Regenerate and commit whenever a source repo changes β€” run all four, not just one, or the untouched files quietly fall behind:

npm run data          # checkout the sibling repos next to this one first
npm run data:lenient  # warn instead of failing β€” read the caveat below first

npm run data is the publish path, so it is strict: a missing repo, and a sibling that is parked on a feature branch or carrying uncommitted edits in a file the collectors read, both fail the run instead of being absorbed into the committed data. That second check exists because it happened β€” a dotfiles-core checked out on a feature branch published a changelog entry that was on no branch of Core's main.

Each individual collector (npm run metrics, corpus, coverage) stays lenient for exploratory runs, and npm run data:lenient is the whole pipeline in that mode. Note that "lenient" means two different things depending on which check trips, and only one of them is harmless:

  • source repo absent β€” the committed file is left alone and the run exits 0, so a fleet-less runner can't zero the data. Nothing is published that wasn't already there.
  • fleet present but unclean β€” the run warns and still writes, absorbing the unmerged work. The snapshot is stamped generatedFrom.clean: false, which is what the two guards below key on, but the contaminated file is on disk either way.

So the lenient path is fine for looking, and is not a publish path. fleet-sync.yml runs all four weekly and opens a PR when the output drifts; data-freshness.yml fails CI when the committed corpus.json / coverage.json no longer match their sources, or when generated.json's Core version is behind the latest dotfiles-core release.

Because the lenient path still writes (with a warning), the thing that actually publishes β€” the commit β€” is guarded in two places, both reading the generatedFrom.clean verdict that collect-metrics.mjs stamps into the file:

guard scope installed by
pre-commit hook one machine npm install (or npm run hooks:install)
committed-data-provenance every PR, every machine data-freshness.yml

The hook follows the same rules as dotfiles-core's core guard: it never clobbers an existing pre-commit, and it skips β€” loudly β€” when core.hooksPath is set, since writing into an ignored .git/hooks would be false protection rather than protection. Bypass a single commit with DOTFILES_ALLOW_DIRTY_DATA=1 git commit … or --no-verify; the CI job is the one that can't be bypassed.

Pushing to main triggers .github/workflows/deploy.yml (Astro build β†’ GitHub Pages). A source repo can ping a rebuild via repository_dispatch; the token and secret walkthrough lives in docs/WEBHOOK-SETUP.md.

(back to top)

Contributing

Because this site restates facts that live elsewhere β€” the repo count, the three-layer model, per-platform install commands β€” it is the easiest place for documentation to drift from reality.

  1. Treat the source-of-truth repos as canonical and keep the site in step; the /doc-audit routine in dotfiles-core checks exactly this cross-repo consistency.
  2. Keep content in the data files (src/data/*, src/content/docs/*) rather than hard-coding it into pages.
  3. Green the gate. npm run check (0 errors) and npm run build before you push.

Bugs and ideas: open an issue.

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Garrett Allen - @gerrrrt - garrettallen2@gmail.com - LinkedIn

Project Link: dotgibson

(back to top)

About

🌐 The public showcase & docs for a cross-platform dotfiles system. Built with Astro, themed Tokyo Night, shipped on GitHub Pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages