finds.dev← search

// the find

gobuffalo/pop

★ 1,526 · Go · MIT · updated Sep 2026

A Tasty Treat For All Your Database Needs

Pop is a Go database toolkit that wraps sqlx with ActiveRecord-style conventions: struct-based CRUD, associations, validations, and its own migration DSL. It's the ORM half of the Buffalo web framework, but works standalone for anyone who wants Rails-like data access in Go across Postgres, MySQL, SQLite, and CockroachDB.

It sits directly on sqlx rather than reinventing raw SQL execution, so the mapping layer stays thin. Associations (belongs_to, has_many, has_one, many_to_many) are first-class with their own package and tests, not bolted on. The `soda` CLI bundles create/drop/migrate/generate/schema-dump into one tool, and the fizz DSL lets one migration file produce correct SQL for four different dialects instead of hand-writing each. Validations and callbacks are built in rather than requiring a separate library.

Almost everything - column mapping, associations, timestamps - runs through reflection over struct tags, so when something silently doesn't work you're reading tag-parsing code, not a query. The README is just a pointer to gobuffalo.io; there's no usage example in the repo itself for someone deciding whether the query syntax fits their taste. It's tied to the Buffalo ecosystem, which has a much smaller community than gorm or sqlc, so fewer answers when you hit an edge case. Fizz is an extra DSL to learn on top of SQL and Go - worth it if you actually target multiple databases, dead weight if you only ever run Postgres.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →