Structure
Naming, layout, scoping, and dependency rules.
Every repository looks identical: same name pattern, same workspace layout, same package scopes, same import rules.
Repository Naming
Section titled “Repository Naming”A repository’s name, written in kebab-case, must mirror the digital experience’s name and nothing else. Diacritics are normalized to their ASCII base; apostrophes and other punctuation are dropped.
skoreonnational-womens-soccer-league
SkóreonSKÓREONSKOREONskoreon-websiteskoreon-backendNational Women's Soccer LeagueNationalWomensSoccerLeaguePackage Naming
Section titled “Package Naming”Each package, kebab-cased throughout, is scoped to the repository name and suffixed with its workspace’s singular form — @<repository-name>/<package-name>-<workspace-name>.
@national-womens-soccer-league/api-gateway-orchestrator@national-womens-soccer-league/order-service@national-womens-soccer-league/error-foundation-library@national-womens-soccer-league/match-domain-library
sdk@national-womens-soccer-league/api-gateway@national-womens-soccer-league/orchestrator-api-gateway@orchestrator/api-gateway@national-womens-soccer-league/order@national-womens-soccer-league/service-order@service/order@national-womens-soccer-league/error@national-womens-soccer-league/foundation-errorRepository Layout
Section titled “Repository Layout”Each package belongs to one of four workspaces, grouped by its architectural role and responsibility. Alongside them, the root holds the files that configure the repository.
Directoryrepository-name
Directory.vite-hooks/
- commit-msg
- pre-commit
Directoryapplications/
- …
Directorylibraries/
Directorydomain/
- …
Directoryfoundation/
- …
Directoryorchestrators/
- …
Directoryservices/
- …
- .gitignore
- alchemy.run.ts
- bun.lock
- bunfig.toml
- nx.json
- package.json
- vite.config.ts
Package Layout
Section titled “Package Layout”Soon!
Directorypackage-name
Directorysrc/
- …
- package.json
- tsconfig.json
- tsconfig.app.json
Workspace Imports
Section titled “Workspace Imports”Applications, orchestrators, and services may import only from domain libraries. Domain libraries may import only from foundation libraries. Foundation libraries import from no other workspace.
applications/ ──┐orchestrators/ ──┼──► libraries/domain/ ──► libraries/foundation/services/ ──┘