The client keeps the database. You keep the code.

You build the backend and the back office on a Postgres the client owns, under a licence nobody can revoke. When the engagement ends, they keep the database and you keep the code — and neither of you is renting the thing in between.

Teams shipping on our tools — Rebase, and FireCMS, the open-source CMS in 10,000+ Firebase projects.

BitForgeSomnio SoftwareRiverstoneICode LabsNFQ

The backend is the deliverable. The panel is the part they see.

Every client project needs the same layer: REST over their tables, a typed client, sessions, file uploads, permissions that hold. It is the least differentiated work on the invoice and the easiest to get subtly wrong.

Rebase generates it from the client's own schema, with the access rules compiled into Postgres row-level security rather than into middleware your successor has to remember. The panel comes off the same definition, so the operator team gets a back office without a second sprint for it.

Editor
MedicalMotion App
Overlay
  • Customize every aspect of the CMS UI
  • Build custom fields and editors with React

What you stop writing per client

The CRUD layer

Controllers, serializers, validation and the OpenAPI document, generated from the collection definition and regenerated when it changes.

The permission checks

Written once beside the collection, compiled into Postgres policies. A table with no rule is refused rather than served, so a forgotten endpoint cannot leak it.

The back office

Tables, forms, media, relations and roles render from the same definition, and your own React components go in wherever the generated field is not enough.

Rebase entity history and audit log showing data changes over time

Where the generated stops, your React starts

A custom field, a custom preview, a whole custom view or an entity action — each is a React component referenced from the collection, not a fork of the panel.

Branding, theme and copy are configuration, so the same codebase can be handed to two clients that look nothing alike.

What carries between projects

Written once for one client, reused on the next without asking anyone's permission.

Reusable components

Build custom fields and views once, reuse across client projects.

White-label by configuration

Logo, palette and copy are config values, not a patched build.

Granular permissions

Per collection, per field, per role — and enforced by Postgres, not by the panel.

Deploys where the client already is

A published container and a Postgres connection string. Docker, Fly, Railway, Hetzner or their own metal.

Cloud or self-hosted

Self-host on the client's own infrastructure, or run it on Rebase Cloud — in private beta today.

React and TypeScript, all the way down

No template language, no proprietary builder. The people you already employ can read it.

Built on it

Products shipped on Rebase

Each of these runs on a Postgres database its owner controls. Built by the Rebase team.

06·Built for real products

Teams ship faster with Rebase

From marketplaces to retail loyalty, public data and internal tools — seven very different products, the same definition underneath.

Start the next client project here.

Scaffold against the client's own Postgres. They keep the database, you keep the code, nobody rents either.

~pnpm dlx @rebasepro/cli init