Overview

A distribution is a repository that ships a set of modules together. The modules are git submodules; the distribution is what end users install and upgrade.

The shape

acme/
  package.json          the distribution manifest, versioned by date
  apps/
    monolith/           optional: one deployment serving every app
    widget/             a module with routes
  packages/
    design/             a module without routes, shared by the apps

Everything under apps/ and packages/ is a submodule with its own repository, its own history and its own semver tags.

What the manifest holds

{
  "name": "@acme/core",
  "version": "2024.12.01",
  "dependencies": { "@fairgarden/core": "2024.06.01" },
  "distribution": { "extends": "@fairgarden/core" }
}

A date for the version, and the distribution it extends if it extends one. Note what is absent: no module versions. See where a version comes from.

What each piece does