Skip to content

Structure

Naming, layout, scoping, and dependency rules.

Every repository looks identical: same name pattern, same workspace layout, same package scopes, same import rules.

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.

skoreon
national-womens-soccer-league
Skóreon
SKÓREON
SKOREON
skoreon-website
skoreon-backend
National Women's Soccer League
NationalWomensSoccerLeague

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-error

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

Soon!

  • Directorypackage-name
    • Directorysrc/
    • package.json
    • tsconfig.json
    • tsconfig.app.json

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/ ──┘