Fireback
A Go module for workspaces, permissions, storage, backup, events and wallets — clone it, wire in what you need, keep the rest out of your build.
Good fit for
- An authentication server for a new product — workspaces, roles, ABAC permissions, invites, OAuth/OTP/passport-based login — up and running in minutes, not weeks.
- A backend that needs resumable large-file uploads (tus protocol) without shelling out to a separate storage service.
- Postgres deployments that want real point-in-time backup/restore (wal-g-based, not pg_dump snapshots), with restore-drill automation and health checks.
- Multi-instance deployments needing a pub/sub event bus that works the same whether it's in-process or Redis-backed.
- Apps that need per-user/workspace wallets and ledgers, with a fake payment provider for local dev.
- Ops dashboards needing live server/process health (CPU, memory, disk, network, Go runtime) over HTTP, WebSocket, or CLI.
- Teams who want the backend and its TypeScript/OpenAPI client generated from one source of truth via Emi, instead of hand-syncing DTOs and permission checks.
Modules at a glance
Each module lives under modules/<name>, is wired into main.go independently, and is defined first in Emi before any hand-written Go fills the gaps.
| Module | What it's for |
|---|---|
| fireback | The core framework: the module system, request → authorized-action pipeline, config, shared field types. |
| abac | Attribute-based access control: workspaces, users, roles, capabilities, passports, invites, bots, tokens, notifications. |
| storage | Resumable large-file upload (tus protocol), backed by Postgres large objects. |
| backup | Point-in-time Postgres backup/restore on top of wal-g: base backups, WAL replay, verify/prune, restore drills. |
| eventbus | Pub/sub between modules, declared in Emi, with interchangeable Local and Redis backends behind one interface. |
| finance | Wallets and ledgers — balances/entries, a user-facing subset, and a fake payment provider for dev/test. |
| internalstats | Read-only server/process health (~40 measurements) over HTTP snapshot, WebSocket stream, and CLI. |
Comes with a UI
A bundled React (Vite + React 19 + TypeScript) admin UI, embedded straight into the Go binary — signin, workspace/member management, role & capability trees, notifications, and wallet screens included. Driven end-to-end by the Emi-generated SDK, with a useXQuery / useXAction hook for every generated action.
Quick start
Get the repository from us and drop it into your project (or install it as a dependency)
git clone <fireback-repository-url>
cd fireback
Set up the database (Postgres, or SQLite since v1.6.0) and seed it in one shot
make devsetup
Run it
./app start