Repository navigation
Migrating From Django
Status: not executed end to end. No Django app has been cut over by following this page yet; it flips to executed on evidence from an adopter's measured run.
The concept map for a Django app. The runbook — phases, exit conditions, stop conditions — is
Migrating an existing app; this page says what each Django term
becomes. As of 2026-11, against Django 6 (docs.djangoproject.com).
| Django | Ultimate |
|---|---|
urls.py + a view that renders a template |
a route file: Routes and render modes |
| a view that writes, a DRF viewset | an action: Actions
|
| a model | an entity(): Entities and migrations
|
| a queryset, a manager method | a query: Queries and live queries
|
makemigrations, migrate
|
x db gen "<name>", then x db migrate
|
startapp |
x g resource <name> (CLI reference) |
| Celery tasks | a job: Jobs and workflows
|
| Celery beat | a task: Scheduled tasks
|
django.contrib.auth |
Auth |
permissions, django-guardian
|
a policy: Policies and authz
|
| Channels | a live query: Realtime |
send_mail |
|
FileField, django-storages
|
Storage and uploads |
django.contrib.admin |
Admin dashboard |
gettext .po files |
one flat catalog per locale: I18n |
| DRF's schema, drf-spectacular |
openapi.json, projected from every action: Actions
|
pytest-django, TestCase
|
Testing |
runserver |
x dev |
| Django | Why |
|---|---|
| Python and its packages | Bun only. A Python dependency is rewritten or bought as a service |
| MySQL, SQLite, Oracle | Postgres only, by design: Home |
| templates | pages render with SolidJS; interactive parts are islands. No converter |
signals (post_save) |
no implicit hooks: the write is an action or a mutator that says what it does (Actions) |
generic relations (ContentType) |
model each target as its own foreign key (Entities and migrations) |
Django names tables <app>_<model> and ids are bigint (DEFAULT_AUTO_FIELD). Phase 1 of the
runbook declares the existing tables with the physical-name overrides it gives, then x db gen
until x verify --only drift agrees: Migrating an existing app.
| Django stores | Branch |
|---|---|
auth_user.password as pbkdf2_sha256$… — Django's default hasher |
⛔ stop: no PBKDF2 verifier ships, and a row in that scheme never verifies. Keep Django's login as a bridge until every user has signed in once, or force a reset (Migrating an existing app) |
bcrypt_sha256$… |
⛔ stop for the same reason: the prefix is Django's, not a PHC string |
the session: django_session rows keyed by a cookie |
bridge it with your own lookup behind configureAuthenticator() (Auth) |
Ultimate — v30.8.0 As of 2026-10. The full-stack framework where the primary developer is an AI agent: bunx create-ultimate myapp → Getting started · live demo. MIT licensed. What npm serves is npm view @ultimat3/core version, never this line, and this footer is the only page that stamps a version.
Repository · Issues · Changelog · llms.txt
Edits to these pages are synced from wiki/ in the repository — change the file there, not the wiki, or the next sync overwrites it.
Start
- Getting started
- Installation
- Shapes
- Bare VM
- Project layout
- Migrating an existing app
- Compared to other stacks
Tutorials
- 1 · First app
- 2 · First feature
- 3 · Auth and admin
- 4 · Jobs and realtime
- 5 · Deploy free
- 6 · Growing up
Primitives
- The eight primitives
- Building your own base
- Actions
- Entities and migrations
- Policies and authz
- Queries and live queries
- Client data
- Jobs and workflows
- Scheduled tasks
- Routes and render modes
Capabilities
- Realtime
- Caching and invalidation
- Batching and preloading
- N+1 detection
- PWA and offline
- Client navigation
- MCP and AI
- Agents
- Admin dashboard
- Scraping
- Auth
- Notify
- Storage and uploads
- Feature flags
- SEO
- Static assets
Cross-cutting
- I18n
- Theming
- UI components
- Interface rules
- Timezones and dates
- Money
- Outbound HTTP
- Resource management
- Migrations and backfills
- Testing
- CI: the gate across parallel jobs
Reference