Docs The system map
The system map
The four cooperating systems — website, updates, hub, and cross-project sync — and how they relate.
Four cooperating systems live in one repository. This is how each behaves and how they fit together.
1. The website
The static site, built on every push to main with no manual publish step.
authored content GitHub Actions GitHub Pages
(_config, _layouts, ──push──> setup-ruby served at
_includes, pages, to main bundle exec jekyll build ──> junebug12851.github.io
_posts, _data, css) upload-pages-artifact + fairyfox.io (CNAME)
deploy-pages
The output is _site/ (git-ignored); the feed, sitemap, and SEO tags are
generated by plugins. _data/projects.yml is the single registry that the home
page and the /projects/ page both render from. Full detail:
deployment.
2. The updates feed
Posts live in _posts/YYYY-MM-DD-title.md and surface on the home page (the latest
few), the updates index, and the Atom feed. There are two kinds of post:
ordinary write-ups, and cross-project round-ups that report what changed in the
projects. The procedure for round-ups is documented under
updates and round-ups.
3. The hub
The hub/ directory holds the project-agnostic standards (hub/standards/),
copy-paste templates (hub/templates/), and the machine registry of
projects (hub/registry.yml). Other repositories pull hub/ to adopt or refresh
shared conventions; it is the source of truth for those standards. The readable
versions are published here under shared standards.
4. Cross-project sync
Two independent, one-directional git flows — never automatic, always on explicit
request, both tracking the dev branch:
hub reads projects projects read hub
┌─────────────────────────────┐ ┌──────────────────────────────┐
│ fairyfox.io │ │ some-project │
│ assets/references/<proj> <─┼──────┤ (its dev branch) │
│ (shallow clone, ignored) │ pull │ │
│ │ │ assets/references/fairyfox <┼── pull
│ hub/ ─────────────────────┼──────┼─> (shallow clone of hub dev) │
└─────────────────────────────┘ └──────────────────────────────┘
There are no submodules, no live dependency, and no build-time coupling — just git. Pull-on-request is also the anti-recursion rule: nothing here triggers a pull in another repository, so the flows cannot loop. Full model: cross-project sync.
How the four relate
The website is the public face; the updates feed is its voice; the hub is the shared spine other repositories lean on; and the sync is the wiring that lets the hub and the projects learn about each other without being entangled.