ServicesTemplate Service
Architecture
Binaries, directory layout, and platform wiring in the template service.
Binaries
| Binary | Path | Role |
|---|---|---|
| API | cmd/api | HTTP server + outbox publisher; flags -migrate, -openapi |
| Flowstate | cmd/flowstate | Background worker (sample loop; no HTTP) |
Layout
services/template/
domains/ ← public per-domain contracts
domain1/events/
domain2/events/
internal/
domains/ ← business logic (insert row + outbox event)
domain1/
domain2/
handlers/ ← HTTP: command → domain (auth not wired yet)
command/ ← idempotency + transaction
publisher/ ← drain domain outboxes
envelope/ ← RabbitMQ wire format (service-level)
migrations/
db/ ← sqlc generated queriesRequest path
Diagram source
flowchart LR
Client --> Chi
Chi --> Huma
Huma --> Command
Command --> Domain
Domain --> SQL
Command --> Outbox
Outbox --> Publisher- Handlers call
command.Domain1orcommand.Domain2. - Domain packages (
internal/domains/domain1) insert intodomain1and append todomain1_events. - The publisher drains each domain outbox to RabbitMQ.
Domains
| Domain | Table | Outbox | Routes |
|---|---|---|---|
domain1 | domain1 | domain1_events | POST/GET /v1/domain1 |
domain2 | domain2 | domain2_events | POST/GET /v1/domain2 |
Event payloads: services/template/domains/domain1/events/ and services/template/domains/domain2/events/.
Business logic: services/template/internal/domains/domain1/create.go.
Tests
go test ./services/template/...