Repository map
Directorycmd/
Directoryarenile/ entrypoint and CLI (serve, migrate, admin create, seed demo, backup, restore, version)
- …
Directoryinternal/
Directoryapp/ composition root and extension registry
- …
Directoryconfig/ environment variables
- …
Directorydomain/ business logic, one package per area (no HTTP, no SQL)
Directoryinventory/ allocations, holds, pools, quotas, automatic assignment
- …
Directorypricing/ pure pricing engine
- …
Directorypolicy/ pure policy engine
- …
Directorybooking/ booking state machine
- …
Directorycheckout/ public flow and manage area
- …
Directorypayment/ payments, ledger, drivers
Directorygateway/ online payments, webhooks, reconciliation
- …
Directorystripe/ Stripe driver
- …
Directorynotify/ emails, magic links, QR, .ics
- …
Directoryonline/ public page settings, terms, credentials
- …
- …
Directorystore/ database access (Bun): the only place with SQL
- …
Directoryhttp/
Directoryadmin/ /api/admin/v1 handlers
- …
Directorypublic/ /api/public/v1 handlers
- …
Directorywebhooks/ payment webhooks
- …
Directorymiddleware/
- …
Directorysse/
- …
Directoryapi/ generated code (api.gen.go)
- …
Directorystatic/ embedded SPAs
- …
Directoryjobs/ in-process job runner
- …
Directorymigrations/
Directorysqlite/
- …
Directorypostgres/
- …
Directoryclock/ injectable clock
- …
Directorymoney/ amounts in cents
- …
Directorycalendar/ dates and slots
- …
Directorypkg/
Directoryext/ public extension interfaces (stable Go API)
- …
Directoryapi/
- openapi.yaml the contract, source of truth
Directoryweb/ npm workspace
Directoryadmin/ manager panel
- …
Directorybooking/ public page and embed.js
- …
Directoryshared/ API client, shadcn UI, map with the kit
- …
Directoryassets/
Directorymap-kits/ original map illustration kits, modern and classic (ADR 0012, 0024)
- …
Directorydocs/ specification, ADRs, architecture, invariants, glossary
- …
Directorydocs-site/ this site (Astro Starlight)
- …
Directorye2e/ Playwright tests
- …
Directorydeploy/ Dockerfile, compose, Coolify, CapRover
- …
Directory.claude/ rules, skills and subagents for agents
- …
- AGENTS.md
- Makefile the only interface for build, tests and checks
Dependency rules
Section titled “Dependency rules”internal/domain/*does not importnet/http,internal/http/*or SQL drivers: it takes part in transactions withbun.IDB.internal/http/*contains no SQL or business logic: decode, call the service, encode.internal/domain/pricingdoes not importstoreorclock, nor usetime.Now.pkg/extimports nothing frominternal/.- Every operational query filters by
establishment_id, taken from the authenticated context (EstablishmentScope), never from the request body.
Generated code
Section titled “Generated code”| Generated | From |
|---|---|
internal/http/api/*.gen.go |
api/openapi.yaml (oapi-codegen) |
web/shared/api/generated/** |
api/openapi.yaml (openapi-typescript) |
web/shared/src/map/kit/generated/**, internal/domain/mapping/kitassets_gen.go |
assets/map-kits (web/scripts/gen-map-kit.mjs) |
Migrations
Section titled “Migrations”One pair of files per schema version, with the same number, in internal/migrations/sqlite/ and
internal/migrations/postgres/ (goose). A migration already on main is never modified: you add the next one.

