The Go framework for modular backends

Authorization, scheduling, workers, events, transactions, migrations, file storage, structured logging and telemetry: 14 standalone Go modules, composed by a thin framework chassis on chi and net/http, with generators. Without the framework hiding your dependencies from you.

Why gpsystem

    Start Go without digging out the fundamentals
    All the base functionality you meet on most sites is ready to go: no researching graceful shutdown, telemetry wiring or an error model before you write your first endpoint.
    14 focused modules, use only what you need
    errs, dbx, auth, queue, storage, telemetry and more: each a standalone, independently versioned Go module you can go get on its own, in any project. The framework composes them, it doesn't require them.
    Authorization on two levels
    JWT auth, role- and permission-based RBAC, plus a policy layer for when a role isn't enough: per-request ownership and state checks, failing closed.
    Scheduling, workers, events
    Events/listeners on asynq, a transactional outbox for guaranteed delivery, cron scheduling with leader election, firing exactly once even across replicas.
    Transactions and migrations
    The transaction travels in the context across repositories; migrations are embedded SQL with their own cmd/migrate binary. pgx or bun: selected by import, invisible to the service layer.
    Observability by default
    Monolog-style dev logs, OTLP traces, metrics and logs, Sentry error tracking grouped by errs code: wired with a single call, switchable via env.
    Spec-first generators
    TypeSpec contract → OpenAPI 3.0 → typed server code; spec/handler drift is a build error. Project, module, surface, handler, event, listener, job: each a single command.
    It does not hide your dependencies
    The types of chi.Router, pgx, bun and asynq live in the public API. The framework centralizes, it doesn't abstract: upstream documentation stays valid for you.
Copyright © 2026