Skip to content
ArenileArenile
Coste360.itCoste360.it

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
  • internal/domain/* does not import net/http, internal/http/* or SQL drivers: it takes part in transactions with bun.IDB.
  • internal/http/* contains no SQL or business logic: decode, call the service, encode.
  • internal/domain/pricing does not import store or clock, nor use time.Now.
  • pkg/ext imports nothing from internal/.
  • Every operational query filters by establishment_id, taken from the authenticated context (EstablishmentScope), never from the request body.
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)

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.