Reference

External dependencies

Every underlying library, its version, its role, and its official documentation, grouped by module.

Following the "centralize, don't abstract" principle, neither the framework nor any of its 14 standalone modules hide the libraries underneath them: their types flow freely through the public API. This page is the full inventory: what each module uses, at what version, and where its official documentation lives, in the same order as the module map. For a pattern-level breakdown, see Design patterns.

Versions reflect each module's own go.mod at the time of writing. A generated project's go.mod follows go mod tidy; go get -u github.com/gp-system/<module> bumps one module's version independently of the others. The framework pins a public gp-system module to a specific commit on its main branch (a v0.0.0-<date>-<hash> pseudo-version), until that module cuts a tagged release.

The point of the grouping below: adopting one module never drags in another module's dependencies. go get github.com/gp-system/errs links nothing but the standard library; go get github.com/gp-system/dbx/pg links pgx and its own OTel tracer, nothing from auth, mail or the other ten modules. Only where one module's own go.mod requires another (authhttperr, eventsqueue+dbx, notifymail+dbx) does adopting it transitively pull in that dependency's footprint too, and that is always a gp-system/* module, documented on its own overview page, never a surprise 3rd-party library.

errs

github.com/gp-system/errs. Zero third-party dependencies: only the standard library (errors, fmt, runtime, log/slog). See errs: Overview.

envconf

github.com/gp-system/envconf. See envconf: Overview.

DependencyVersionRoleDocs
caarlos0/env/v11v11.4.1env var → struct parsinggithub.com/caarlos0/env
joho/godotenvv1.5.1.env file loadinggithub.com/joho/godotenv

httperr (+httperr/validate)

github.com/gp-system/httperr. See httperr: Overview.

DependencyVersionRoleDocs
go-playground/validator/v10v10.30.3struct-tag-based validationgithub.com/go-playground/validator
github.com/gp-system/errsv0.1.0the error type httperr renderserrs: Overview

dbx (+dbx/pg, dbx/bunx, dbx/seed)

github.com/gp-system/dbx. See dbx: Overview.

DependencyVersionRoleDocs
jackc/pgx/v5v5.10.0PostgreSQL driver + connection poolgithub.com/jackc/pgx
exaring/otelpgxv0.11.1OTel tracer over the pgx poolgithub.com/exaring/otelpgx
uptrace/bun (+dialect/pgdialect, extra/bunotel)v1.2.18SQL-first query builder, PostgreSQL dialect, OTel query hookbun.uptrace.dev
pressly/goosein the generated projectSQL migrations, driven by cmd/migrategithub.com/pressly/goose
sqlcoptional, project-sideSQL → typed Go code generator; dbx/pg.DBTX is compatible with itsqlc.dev

logx (+logx/monolog)

github.com/gp-system/logx. logx itself imports nothing beyond the standard library; only its logx/monolog subpackage requires github.com/gp-system/errs, so adopting logx alone (without the monolog formatter) pulls in nothing at all. See logx: Overview.

DependencyVersionRoleDocs
github.com/gp-system/errsv0.1.0logx/monolog's stack-trace rendering (errs.CodeOf, errs.FullFrames)errs: Overview

paginate

github.com/gp-system/paginate. No dependency beyond github.com/gp-system/errs (ErrInvalidCursor and friends). See paginate: Overview.

queue

github.com/gp-system/queue. See Queue.

DependencyVersionRoleDocs
hibiken/asynqv0.26.0Valkey-backed distributed task queuegithub.com/hibiken/asynq
redis/go-redis/v9v9.21.0Redis-protocol client (connects to Valkey)redis.uptrace.dev

events (+events/outbox, events/scheduler)

github.com/gp-system/events. Its own go.mod requires github.com/gp-system/queue and github.com/gp-system/dbx (an already-extracted module depending on two others), so adopting events pulls in both of their footprints; see events: Overview.

DependencyVersionRoleDocs
hibiken/asynqv0.26.0the outbox relay's and scheduler's task dispatchgithub.com/hibiken/asynq
redis/go-redis/v9v9.21.0the scheduler's leader-election leaseredis.uptrace.dev
jackc/pgx/v5v5.10.0events/outbox's pgx-backed storegithub.com/jackc/pgx
uptrace/bunv1.2.18events/outbox's bun-backed storebun.uptrace.dev
google/uuidv1.6.0outbox row / task IDsgithub.com/google/uuid

auth (+auth/rbac, auth/policy)

github.com/gp-system/auth. A leaf module: its own go.mod requires nothing beyond golang-jwt/jwt/v5, not even github.com/gp-system/errs. It returns plain sentinel errors and never writes a response; the framework's server package (which does depend on httperr) provides the RFC 9457 Problem rendering on top. See Authentication and Using auth standalone.

DependencyVersionRoleDocs
golang-jwt/jwt/v5v5.3.1JWT signing and verificationgithub.com/golang-jwt/jwt

mail (+mail/smtp, mail/mjml)

github.com/gp-system/mail. See Mail: Overview.

DependencyVersionRoleDocs
wneessen/go-mailv0.8.1SMTP client, mail/smtpgithub.com/wneessen/go-mail
Boostport/mjml-gov0.16.0MJML → HTML compilation (WASM, mjml.io language), mail/mjmlgithub.com/Boostport/mjml-go
go.opentelemetry.io/otel (+/trace)v1.44.0spans around outgoing sendsopentelemetry.io/docs/languages/go

notify (+notify/broadcast, notify/database)

github.com/gp-system/notify. Its own go.mod requires github.com/gp-system/mail and github.com/gp-system/dbx, so adopting notify pulls in both of their footprints; see Notifications: Overview.

DependencyVersionRoleDocs
centrifugal/centrifugev0.38.0notify/broadcast's live-push node/publishergithub.com/centrifugal/centrifuge
uptrace/bunv1.2.18notify/database's storebun.uptrace.dev
google/uuidv1.6.0notification row IDsgithub.com/google/uuid
go.opentelemetry.io/otelv1.44.0spans around dispatchopentelemetry.io/docs/languages/go

storage (+storage/memory, storage/local, storage/storagetest)

github.com/gp-system/storage. The Driver/Disk/Manager core and its in-memory/local-disk drivers add nothing beyond OTel: no object-storage SDK is linked unless you also import the S3 driver below. See Storage: Overview.

DependencyVersionRoleDocs
go.opentelemetry.io/otel (+/metric, /trace)v1.44.0spans and metrics around storage operationsopentelemetry.io/docs/languages/go

minio-storage-driver

github.com/gp-system/minio-storage-driver, storage's S3-compatible driver as a standalone module (the declared package name is s3): its own repo and its own go.mod, so only projects that actually need S3 pay for this dependency. See S3.

DependencyVersionRoleDocs
minio/minio-go/v7v7.2.1S3-compatible object storage clientgithub.com/minio/minio-go

telemetry (+telemetry/otelx, telemetry/sentryx)

github.com/gp-system/telemetry. Its own go.mod requires github.com/gp-system/errs (used by telemetry/sentryx to read a captured error's stack trace, code and public message), nothing else: the console slog.Handler is supplied by the caller through WithLogHandler, so logx is one option among many, not a dependency, see logx: Overview and Telemetry: Overview.

DependencyVersionRoleDocs
github.com/gp-system/errsv0.1.0the error type telemetry/sentryx reads a stack trace, code and public message fromerrs: Overview
getsentry/sentry-go (+/otel, /otel/otlp)v0.48.0error reporting, breadcrumbs, and the Sentry span exporter wired into the OTel tracer providerdocs.sentry.io/platforms/go
go.opentelemetry.io/otelv1.44.0OTel API (trace, metrics)opentelemetry.io/docs/languages/go
go.opentelemetry.io/otel/sdkv1.44.0OTel SDK implementationopentelemetry.io/docs/languages/go
go.opentelemetry.io/otel/sdk/log, /logv0.20.0OTel logs SDK/API (pre-1.0, which is why telemetry isolates it behind telemetry/otelx)opentelemetry.io/docs/languages/go
go.opentelemetry.io/contrib/bridges/otelslogv0.19.0slog → OTel log bridgeopentelemetry-go-contrib
go.opentelemetry.io/contrib/exporters/autoexportv0.69.0env-driven exporter selection (OTEL_TRACES_EXPORTER etc.)opentelemetry-go-contrib

The framework itself

github.com/gp-system/framework: the CLI plus the four chassis packages (app, server, worker, realtime). These are on top of, not instead of, the module dependencies above: worker requires queue+events, realtime requires notify+auth+queue, and so on, per the module map.

DependencyVersionRoleFramework packageDocs
go-chi/chi/v5v5.3.1net/http-based routerservergithub.com/go-chi/chi
go-chi/corsv1.2.2CORS middleware for chiservergithub.com/go-chi/cors
go.opentelemetry.io/contrib/.../otelhttpv0.69.0net/http OTel instrumentationserveropentelemetry-go-contrib
hibiken/asynqv0.26.0the worker chassis's task serverworkergithub.com/hibiken/asynq
centrifugal/centrifugev0.38.0the realtime gateway's noderealtimegithub.com/centrifugal/centrifuge
oapi-codegen/oapi-codegen/v2v2.8.0OpenAPI → Go server code generator, codegen-time only: not linked into the running binarythe generated project's go toolgithub.com/oapi-codegen/oapi-codegen
spf13/cobrav1.10.2CLI command treecmd/gpsystem, internal/clicobra.dev
golang.org/x/tools(goimports)formats generated filesinternal/generatorpkg.go.dev/golang.org/x/tools
gopkg.in/yaml.v3v3.0.1gpsystem.yaml manifest serializationinternal/generatorpkg.go.dev/gopkg.in/yaml.v3
@typespec/compiler, http, openapi, openapi31.10.0 (npm, in the generated project)API contract spec language → OpenAPI 3.0 compilationspec/typespec/**typespec.io/docs

Dev tooling

ToolRoleDocs
misetoolchain pinning (Go, Node) + task runner (build, test, lint, e2e, ...)mise.jdx.dev
golangci-lint (v2 schema)static analysis, mise run lintgolangci-lint.run
commitlint (@commitlint/config-conventional)Conventional Commits enforcement in the gpsystem repocommitlint.js.org
RustFSS3-compatible object store for dev/compose (instead of MinIO)rustfs.com
mailpitSMTP trap for dev/composegithub.com/axllent/mailpit
PostgreSQL 17 (alpine image)dev database in compose.ymlhub.docker.com/_/postgres
Valkey (alpine image)queue/scheduler backend in compose.ymlhub.docker.com/_/valkey

Where to next

  • The design patterns behind these dependencies (why storage's Driver model or telemetry/sentryx is a wrapper and the rest aren't) are covered in Design patterns.
  • Every module's environment variables are listed on Configuration.
Copyright © 2026