A multi-module Go monorepo. One independent module per package, semver-tagged from v0.1.0 per module, installable via go get.
Design rationale per package: https://plinth.run/sdk/.
| Package | Status | Responsibility |
|---|---|---|
errors |
shipped · pre-release | Typed error vocabulary; sentinels via errors.Is; RFC 7807 problem+json middleware. |
audit |
shipped · pre-release | Non-blocking publisher with CloudEvents-shaped events and a pluggable transport. |
paginate |
shipped · pre-release | Cursor + offset pagination types and parsers; allow-list-based sort safety. |
vault |
shipped · pre-release | Secret reader: /run/secrets/<name> first, env-var fallback, in-memory cache. |
health |
shipped · pre-release | Parallel dependency-probe registry with separate liveness / readiness handlers. |
otel |
shipped · pre-release | OpenTelemetry SDK init with standard resource attributes; OTLP/HTTP default. |
authz |
shipped · pre-release | Fail-closed Cerbos PDP client; bypass mode rejected at startup in production. |
Each shipped package has its own go.mod, semver tag, README, and minimal dependency surface.
# Per package — semver-tagged independently.
go get github.com/plinth-dev/sdk-go/errors@latestTop-level go.work joins all modules into one Go workspace, so cross-module refactors don't need replace directives.
go work sync # ensure workspace is current
go test -race -cover ./... # run from any module directory
go vet ./... # check from any module directoryCI runs go vet + go test -race -cover per module on every push.
.
├── go.work # Go workspace joining every module
├── errors/ # github.com/plinth-dev/sdk-go/errors
│ ├── go.mod
│ ├── doc.go errors.go http.go
│ ├── errors_test.go http_test.go
│ ├── README.md LICENSE
│ └── ...
├── audit/ # (not yet shipped)
├── authz/ # (not yet shipped)
└── ...
Each package is tagged independently as <package>/vX.Y.Z. Breaking changes within 0.x are batched into minor versions; v1.0 freezes APIs for a year.
sdk-ts— the TypeScript SDK.starter-api— Go module starter that imports these packages.plinth.run— per-package design docs and tutorials.
MIT — see LICENSE.