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

Skip to content
ubgo Alpha
46libraries across 9 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 authentication, caching, logging and configuration. Every piece is its own Go module, so a service imports only what it uses, from sign-in to caching. 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.

auth: core and adapters

  • passes the suite
  • does not pass

Batteries included

Build almost any app

The pieces an app needs come out of the box: sign-in, SQL, caching, config, logging, jobs, health checks, GraphQL and HTML views, starters for the backend and the web app, and the tool that builds and releases it all. Each piece is its own module, so you take only what your app uses. Pick an app shape to see which modules it is built from.

Your app

SaaS backend

Accounts and organizations, a typed SQL layer, caching, config, logs and telemetry, health checks and a clean shutdown, plus background jobs and cron.

  • public module, links to its page
  • upcoming, not public yet

Upcoming modules (workflow, brick, validator) are on the way and not public yet.

public libraries
46public libraries
Go modules
246Go modules
adapters in contrib/
84adapters 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. 246 go.mod files across the 46 public libraries. You add the ones you use. See the map
  • Small cores, adapters outside them. 84 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, and auth works with net/http, chi, Gin, Echo, Fiber and gqlgen.

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 servicevolt-api startervolt-web starter

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 46 →
auth New Auth and identity

Embeddable authentication with plugins for email, password, phone, OAuth, passkeys, 2FA, API keys, JWT and organizations, stored in your own Postgres, MySQL or SQLite; it can also be the OpenID Connect login for your other apps.

v0.1.11 core dep36 plugins8 adapters
  • email
  • password
  • phone
  • username
  • magiclink
  • oauth
  • twofactor
  • passkey
  • apikey
  • jwt
  • organization
  • admin
  • ldap
  • siwe
  • +22 more

its own Go module, so its dependency is downloaded only when imported

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

Auth and identity

1

Sign-in, sessions, two-factor, passkeys, OAuth and organizations, stored in your own database.

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.

Upcoming

Not public yet, so no links
  • workflow upcoming

    Embeddable Go library for cron schedules, delayed and background jobs with retries, and multi-step workflows behind one Client interface, with swappable drivers (in-memory, SQL and Hatchet).

  • brick upcoming

    A component-based HTML render engine for Go built on html/template, with layouts, components, islands and server actions, and a 133-component UI kit.

  • validator upcoming

    Struct-native Go validator with a serializable IR; one set of rules validates in Go, exports to JSON Schema, and runs as a Standard-Schema TypeScript validator.