PostgreSQLOpen-Source-Backend · MIT · Jedes Postgres

Ein Backend für dein Postgres.Und ein Admin-Panel, das du nicht bauen musst.

REST, ein typisiertes SDK, Realtime, Auth und Storage für deine App; Tabellen, Medien, Relationen und Rollen für dein Team. Unser eigenes CRM besteht aus 23 Collections und keinem einzigen handgeschriebenen Screen.

Demo testen

Von den Machern von FireCMS, dem Open-Source-CMS in über 10.000 Firebase-Projekten.

DearDoc LogoMedicalMotion LogoProton HealthWithUSocial Income

01·Funktionsweise

Du schreibst diese Datei.
Den Rest schreibst du nicht.

Schema, REST API, typisiertes SDK, Bearbeitungsformulare und jede Panel-Ansicht entstehen daraus – und ändern sich mit ihr. Es gibt kein zweites Datenmodell, das synchron gehalten werden muss, und keine CRUD-Maske, die gewartet werden muss, wenn sich ein Feldname ändert.

App Code — products.ts
import type { PostgresCollectionConfig }
  from "@rebasepro/types";

export const products: PostgresCollectionConfig = {
  name: "Products",
  slug: "products",
  table: "products",
  properties: {
    name: {
      name: "Name",
      type: "string",
      validation: { required: true },
    },
    category: {
      name: "Category",
      type: "string",
      enum: {
        electronics: "Electronics",
        fashion: "Fashion",
        home: "Home & Garden",
      },
    },
    price:     { name: "Price", type: "number" },
    in_stock:  { name: "In Stock", type: "boolean" },
    image_url: { name: "Image", type: "string", url: true },
  },
};

→ erzeugt DB-Schema · REST-API · typisiertes SDK · Entity-Formulare · Admin-Views

02·Was du bekommst

Einsatzbereite APIs für deine Datenbank, ab Minute eins.

Ein typisiertes SDK für deine Collections, REST für jede Tabelle und Realtime über WebSocket, ab Minute eins auf deiner Datenbank.

app.ts — typisiert aus deinen Collectionslive
1import { createRebaseClient } from '@rebasepro/client';
2import type { Database } from './generated/sdk/database.types';
3
4const client = createRebaseClient<Database>({ baseUrl: API_URL });
5
6const { data } = await client.data.
TypeScriptUTF-8Ln 6, Col 36
REST, über jede Tabellelive · send a request
Endpoints
GET/api/data/users
POST/api/data/users
GET/api/data/posts
PUT/api/data/posts/:id
DEL/api/data/posts/:id
Ready
Response
Send a request...
Realtime — LISTEN/NOTIFYlive
your app — web
name
status
upd
Alice
pending
2m ago
Bob
active
5m ago
Carol
inactive
1h ago
Dave
active
12m ago
ws
live
admin panel
name
status
upd
Alice
pending
2m ago
Bob
active
5m ago
Carol
inactive
1h ago
Dave
active
12m ago
Both clients subscribed to users…ws://localhost:3000/realtime

Dazu Auth und Rollen, S3-kompatibler Storage, geplante Jobs, Serverless Functions und Backups. Nichts davon ist ein separater Dienst, für den du dich registrieren und den du zusammenstecken musst.

Backend erkunden

Und das Admin-Panel, das dein Team jeden Morgen öffnet.

Tabellenbearbeitung, Medien, Relationen, Rollen und Workflows — ein Admin-Panel, das du Nicht-Entwicklern direkt am ersten Tag übergeben kannst. Es ist ein Client deiner API wie jeder andere: Was immer es sieht, bestimmen deine Policies.

Womit deine App spricht

Rebase Backend

Der Server, den deine App aufruft: REST, ein typisiertes SDK, Realtime, Auth und Storage über deinem eigenen Postgres.

@rebasepro/server

Wo dein Team arbeitet

Rebase CMS

Tabellen-Editing, Medien, Relationen, Rollen und Workflows — mit deinen eigenen React-Komponenten überall dort, wo das Standardfeld nicht reicht.

@rebasepro/cms

Die Entwicklerhälfte des Panels

Rebase Studio

SQL-Editor, Schema-Visualisierung, RLS-Policy-Editor, Logs und API-Explorer. Studio ist die Entwicklerhälfte desselben Panels, das dein Team ohnehin schon nutzt.

@rebasepro/app

Rebase CMS ansehen

03·Security first

In TypeScript geschrieben. Von Postgres erzwungen.

Deine Zugriffsregeln kompilieren zu echten Postgres-Policies — granular pro Collection, pro Feld, pro Rolle. Die Datenbank setzt sie auf jedem Zugriffspfad durch: deine Routen, dein nächtlicher Job, das Backfill-Skript, das jemand einmal ausgeführt hat, der Agent mit einem Key. Nicht Middleware, an deren Aufruf man erst denken muss.

Wo die Regel heute lebtcollections/orders.ts · eine Regel, in Postgres, auf jedem Weg
routes/orders.tsif (order.ownerId !== req.user.id) return 403;✓ checks
jobs/nightly-report.tsdb.select().from(orders) // every row✗ no check
scripts/backfill.tsdb.update(orders).set(…) // run once, kept forever✗ no check
agents/tools.tsconnect(URL, SERVICE_ROLE_KEY)✗ bypasses RLS
the hosted dashboardselect * from orders -- as the owner✗ no policy
securityRules: [
  { operation: "select", using: "owner_id = rebase.uid()" },
  { operation: "update", using: "owner_id = rebase.uid()" },
]
-- compiled into Postgres; enforced on every statement, for every caller
CREATE POLICY orders_select ON orders FOR SELECT USING (owner_id = rebase.uid());
-- a table with no policy is not served at all
routes/orders.tsrebase_user→ policy applies
jobs/nightly-report.tsrebase_user→ policy applies
scripts/backfill.tsrebase_user→ policy applies
agents/tools.tsscoped key→ policy applies
the panelrebase_user→ policy applies

Glaub uns das nicht einfach.

rls-check liest den Katalog deiner eigenen Datenbank und meldet, was tatsächlich offen liegt — Tabellen, die mit abgeschalteter Row-Level Security ausgeliefert werden, Policies, die für jeden wahr sind, Views, die an der RLS ihrer Basistabellen vorbeilesen. Fünfzehn Checks. Jedes Postgres: Supabase, Neon, RDS, dein eigener Server. Es liest nur, braucht keinen Account, und es ist ihm egal, ob du Rebase benutzt.

Alle 15 Prüfungen ansehen
npx @rebasepro/rls-check

SELECTs auf die Systemkataloge und sonst nichts. Keine Telemetrie, kein Upload, und deine Daten liest es nie.

04·Gebaut für das Zeitalter der Agenten

Das Backend, das ein Agent nicht ruinieren kann.

Ein KI-Agent kann in einer Stunde ein Backend hochziehen. Ob dieses Backend sicher ist, kann er dir nicht sagen. Agenten sind hervorragend darin, plausible Backends zu produzieren — und notorisch schlecht darin, sichere zu bauen. Rebase macht das sichere Ergebnis zum einzig möglichen, per Konstruktion.

KI- und Agent-Funktionen ansehen
agent · what it can reach

A surface an agent can hold

No controllers, no serializers, no migrations to hand-write, and nothing for a model to invent between the schema and the route. The whole contract fits in one context window, and the compiler checks whatever it writes back.

config/collections/orders.ts
export const orders: PostgresCollectionConfig = {
table: "orders",
properties: { total, status, customer },
securityRules: [{ operation: "select", … }],
};
→ REST · typed SDK · RLS policies · admin views
no controllers to reviewfits in one context windowcompiler-checked

05·Gebaut für echte Produkte

Sieben Produkte. Alle in Production.

Ein zertifiziertes Medizinprodukt, ein Retail-Loyalty-Programm, ein zweiseitiger Marktplatz, offene Daten, ein Outbound-Sales-Agent, ein Design-Tool und ein CRM — teils von uns, teils von unseren Kunden.

Verbinde es mit deiner Datenbank.

MIT-lizenziert, von A bis Z. Deine Daten bleiben in deinem Postgres: keine Abhängigkeit von einem Anbieter, kein Per-Seat-Pricing, und der Ausstieg ist ein Redeploy.

Lokal ausführen

Ein Befehl gegen dein bestehendes Postgres. Kein Account, kein Container-Pull, keine Registrierung.

pnpm dlx @rebasepro/cli init
Quickstart

Selbst hosten

Docker, Fly, Railway, Hetzner oder Bare-Metal. Deine Daten bleiben in deiner Infrastruktur und erreichen uns nie.

docker compose up -d
Deployment-Guides

Rebase CloudPrivate Beta

Managed Hosting auf unserer Infrastruktur. Sie betreibt heute echte Tenants und öffnet in Wellen.

Zugang anfragen