Rebase
vs
Django

Rebase vs Django

Django gives you an admin scaffolded from your models and a server-rendered page for every screen. Rebase gives you the same scaffolding as a React app, plus the REST API and the typed client the admin is a consumer of — so a mobile client or a separate frontend is not a second thing you build.

Monolith vs decoupled

Server-rendered, or headless with an SDK

Where it hurts

Django's admin is tied to its server-rendered templates and to the ORM behind them. A separate consumer app needs an API of its own — Django REST Framework or Ninja — and that means serializers, viewsets, routers and permission classes describing the same models a second time. Rebase generates the API and the admin from one definition, so there is no second description to keep in step.

What Rebase does instead

Rebase is API-first, and decoupled by default.

  • The panel is a standalone React app talking to its own backend APIs.
  • The same definition also produces a typed SDK for any other application you write.
The interface

Page reloads, or a React SPA

Where it hurts

A server-rendered admin reloads the page on every save, and putting a React component or a live view inside one means bolting a build step onto a template. The Rebase panel is a React app to begin with, so a custom field is a component you export.

What Rebase does instead

The Rebase panel is a React single-page application.

  • Navigation does not round-trip the server, and an action does not reload the page.
  • Realtime subscriptions mean a record updates when someone else edits it, without a refresh.
  • Customisable with ordinary React components.

Do not switch

When to stay on Django

When your team writes Python, when you need its ecosystem — data science libraries, Celery, the ORM's maturity — or when the application is a server-rendered Django app and adding a separate backend would be a second thing to run. Django is a complete framework; Rebase is a backend plus an admin panel, and it does not try to be the former.

Questions

Rebase and Django, answered

Do I have to leave Python?

For the backend, yes — Rebase is TypeScript. That is the honest cost, and if your team's expertise and existing code are Python, it is a large one. What you get back is one language across the stack: the same collection definitions produce the database schema, the REST API, the typed SDK and the admin panel, so the frontend is not consuming an API that somebody maintains by hand.

Can Rebase read a database Django created?

Yes, if it is PostgreSQL. Rebase connects to existing tables rather than generating its own schema, so Django's tables — including its auth tables, if you want them modelled — can be described as collections and get an admin panel and an API without touching the data.

How does the admin compare to django-admin?

django-admin is excellent and deservedly famous, and this comparison exists because people ask for it elsewhere. The differences: Rebase's panel is React, so it extends in the framework most frontend teams already use, and it is generated alongside a typed API rather than being a separate surface over the ORM. django-admin is more battle-tested by a wide margin.

When is Django the better choice?

When your team writes Python, when you need its ecosystem — data science libraries, Celery, the ORM's maturity — or when the application is a server-rendered Django app and adding a separate backend would be a second thing to run. Django is a complete framework; Rebase is a backend plus an admin panel, and it does not try to be the former.

Where is authorization enforced?

In PostgreSQL, through row-level security compiled from the collection definitions. Django enforces permissions in the application layer, which is the normal and sensible thing for a framework to do. The difference shows up when something other than your Django app reaches the database — a script, a report, another service — and the rules either travel with the data or do not.

Do I have to self-host Rebase?

No. Self-host it and you own the data, the code and the machine it runs on — that is the default and it is fully supported. Or deploy the same project to Rebase Cloud, which is live with real tenants today and opening in batches while it is in private beta, priced per resource rather than per seat. Your code is identical either way; hosting is a deployment target, not a fork.

Don't take our word for it.

The comparison that matters is the one you run. Point Rebase at a Postgres database you already have and see how it holds up next to Django.

~pnpm dlx @rebasepro/cli init