ubgo is in early alpha: libraries and APIs may still change.

Skip to content
ubgo Alpha
45libraries across 8 areas

Batteries included for Go, one module at a time.

ubgo is an ecosystem for building Go apps, in the spirit of the components Laravel ships for caching, logging and configuration. Every piece is its own Go module, so a service imports only what it uses. The main libraries share one shape, a small core with adapters outside it and a shared test suite, so learning one teaches you the next.

go get github.com/ubgo/<name>

or press Ctrl K to jump to any library

A small core. Adapters outside it.

Pick a library to see its real core and the modules that plug into it.

cache: core and adapters

  • passes the suite
  • does not pass
public libraries
45public libraries
Go modules
209Go modules
adapters in contrib/
76adapters in contrib/
shared conformance suites
4shared conformance suites

Counted from the public repos' go.mod files and contrib/ folders.

How ubgo compares

ubgo is not one framework you adopt whole. It is a set of Go modules that follow the same rules.

ubgo is

  • Separate Go modules. 209 go.mod files across the 45 public libraries. You add the ones you use. See the map
  • Small cores, adapters outside them. 76 adapter modules live in contrib/ folders, so an integration's dependencies stay out of your build until you import it. For example errx, logger and health.
  • Backends you can swap, checked by one suite. cache (cachetest), cache-obj (objtest), cfgkit (cfgkittest), sqlb (sqlbtest): a backend counts only when its tests run the suite.
  • Fits the HTTP stack you already use. health, shutdown and buildinfo ship adapters for net/http, Gin, Chi, Echo and Fiber.

ubgo is not

  • A web framework. There is no ubgo router or request lifecycle. You keep your own, and the libraries plug into it.
  • An ORM. sqlb builds typed SQL; entkit and entx extend the ent ORM instead of replacing it.
  • All or nothing. A library needs another one only when its go.mod says so, and the map draws every one of those links.

New: Volt

From libraries to a shipped program

ubgo libraries are the parts your code runs on. Volt is the layer on top: the volt tool scaffolds a CLI, runs the CI gate, builds for every platform and makes releases it checks after publishing, and its kit modules give a CLI the parts every CLI needs.

Meet Volt brew install khanakia/tap/volt

3 · Your app

A CLI, a library or a service

mytool (volt new cli)your libraryyour service app starters are coming

2 · Volt tooling

voltkit →

The Volt tool

volt newvolt statusvolt civolt covervolt buildvolt releasevolt gen

Kit modules you import

appdiroutputskillcmdversioncmd

Real link: voltkit's versioncmd module requires ubgo/buildinfo in its go.mod.

Explore

The ones most services reach for first.

All 45 →

How several of them are built

True for the libraries named under each one, as their READMEs state. Not a promise for every repo.

Shared conformance suites

A family's contract is a test suite that every backend runs, so backends behave the same.

By area

Errors and logging

4

Structured errors, logging and telemetry.

Caching

11

One cache interface with in-memory, Redis, Postgres, Memcached, tiered and cluster backends.

Config and env

2

Typed configuration and .env files.

SQL and data

7

SQL building, JSON column types, IDs and locks.

GraphQL and ent

6

Helpers and code generation for gqlgen and the ent ORM.

Crypto

2

Safe-default encryption and signing for Go and TypeScript.

Tooling

5

Doc checking, task running, code generation and small utilities.

More libraries are on the way.