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.