ADR 0001 — One repository

ADR 0001 — One repository An architecture diagram generated by Archify. One public repository, one Go module · septagon-oss/platformkit · kernel, modules, UI stack, app · Architecture component One public repository, one Go module septagon-oss/platformkit · kernel, modules, UI stack, app the tree: kit/ · modules/ · ui/ · apps/ · shared code is ordinary packages under ui/, design/, kit/ · the mechanism the tree: kit/ · modules/ · ui/ · apps/ shared code is ordinary packages under ui/, design/, kit/ go.mod · one module path · module github.com/septagon-oss/platformkit · go 1.26.6 · the mechanism go.mod · one module path module github.com/septagon-oss/platformkit · go 1.26.6 .github/workflows/release.yml · a v* tag on main · one version: module, image, release · the mechanism .github/workflows/release.yml a v* tag on main · one version: module, image, release scripts/check_packages.sh · check-packages · ceiling in packages-budget.json · kept true by scripts/check_packages.sh check-packages · ceiling in packages-budget.json Rejected: 67 repositories in one workspace · a contract change was four commits in a fixed order · Architecture component Rejected: 67 repositories in one workspace a contract change was four commits in a fixed order private catalog and client applications · go.mod pins a published version of the public module · Architecture component private catalog and client applications go.mod pins a published version of the public module the docs site (platformkit-docs) · source-tree links point into the one repository · Architecture component the docs site (platformkit-docs) source-tree links point into the one repository lives in declared in built by checked by instead of links into one tree requires a published version the mechanism kept true by Legend Backend Security External

Context

  • • Before: 67 git repositories in one workspace — a kernel, a module catalog, a design system, a dozen pk-* libraries, client overlays, infra — and 2,122 packages linked into the one binary
  • • A contract change was a commit in four repositories in a fixed order; almost every repository had one consumer and none was released on its own cadence

Consequences

  • • One go.mod, one Makefile, one CI workflow, one version; a contract change is one commit and one compile error set
  • • No boundary is enforced by version string, so the ones that remain (contracts/, internal/) are the compiler's; a single library cannot be released alone, and no consumer wanted it

Evidence

  • • make check-packages: scripts/check_packages.sh counts go list -deps ./apps/platformkit against the ceiling in packages-budget.json
  • • check-packages is a prerequisite of make check, which ci.yml runs on a pull request and release.yml runs on the tag; the ADR names no test