Skip to content

v0.13.0 — Postgres is a supported database

Choose a tag to compare

@joaorufino joaorufino released this 26 Jul 09:21
· 170 commits to main since this release

The PlatformKit OSS front door: one binary composing the nine-module starter.

Install

go install github.com/septagon-oss/platformkit@latest

Changes

Corrected after publication: this release also shipped platformkit new,
which was omitted from these notes. See v0.13.1.

One command turns the kit into your product. platformkit new app <name> writes a Go application that boots this starter and is ready for your own modules, with a container image, a Makefile whose verify target is this project's own gate, and an agent pack (AGENTS.md, llms.txt) for AI coding agents. platformkit new module <name> generates a tenant-scoped module — contract, store, migration, routes, and a test that fails the moment tenant isolation breaks — that registers itself, so adding one never edits main.go.

PlatformKit runs on Postgres. Point database.driver at postgres, give it a DSN, and the whole application — all nine modules — runs there. The binary registers both drivers, so choosing an engine needs no code change and no rebuild.

database:
  driver: postgres
  dsn: "postgres://user:pass@host:5432/db?sslmode=require"

SQLite remains the zero-setup default for local development and small single-node deployments, and that path is unchanged.

This is not a DSN swap dressed up as support. Every module store has a real Postgres adapter that passes the same store conformance suite the SQLite adapters pass — tenant-scoped list, tenant immutability on update, retired rows hidden — against a real Postgres, so tenant isolation is held by an executable check on both engines. The Postgres profile uses a real connection pool; SQLite keeps its single-connection pin because it is a single-writer engine.

Also in this release: the pre-v0.4 bootstrap migration path is deleted (~3,900 lines of SQLite-coupled machinery that could never run, since PlatformKit has not launched and no deployment carries that data). The durable bootstrap identity ledger it wrapped — the part that keeps a database's tenant and user IDs stable across restarts — survives intact.

Verified with this binary before tagging: production-mode boot on Postgres with the password supplied through PK_ADMIN_PASSWORD, tables created, seed, login, and create/open/publish/delete over the canonical opaque-segment API; then the same binary zero-config on SQLite.

See the CHANGELOG.

Compatibility

  • Go 1.26 or newer.
  • Pre-1.0 — pin this version. A minor release may change public API deliberately.

Links

📖 Documentation https://septagon-oss.github.io/pk-docs/
💬 Discussions https://github.com/septagon-oss/platformkit/discussions
🔒 Security policy https://github.com/septagon-oss/platformkit/blob/main/SECURITY.md
⚖️ License https://github.com/septagon-oss/platformkit/blob/main/LICENSE