Skip to content

plinth-dev/sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Plinth — Go SDK

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/.

Packages

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.

Install

# Per package — semver-tagged independently.
go get github.com/plinth-dev/sdk-go/errors@latest

Local development

Top-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 directory

CI runs go vet + go test -race -cover per module on every push.

Layout

.
├── 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)
└── ...

Versioning

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.

Related

  • sdk-ts — the TypeScript SDK.
  • starter-api — Go module starter that imports these packages.
  • plinth.run — per-package design docs and tutorials.

License

MIT — see LICENSE.

About

Go SDK for Plinth — fail-closed authz, audit, OTel, typed errors.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages