Repository navigation
Migrating From Laravel
Status: not executed end to end. No Laravel 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 Laravel app. The runbook — phases, exit conditions, stop conditions — is
Migrating an existing app; this page says what each Laravel term
becomes. As of 2026-11, against the current release (laravel.com/docs).
| Laravel | Ultimate |
|---|---|
routes/web.php + a controller that returns a view |
a route file: Routes and render modes |
| a controller that writes, a form request | an action, its input schema: Actions
|
| an Eloquent model | an entity(): Entities and migrations
|
| a query scope, the query builder | a query: Queries and live queries
|
php artisan make:migration, migrate
|
x db gen "<name>", then x db migrate
|
php artisan make:* |
x g <kind> <name> (CLI reference) |
| a queued job | a job: Jobs and workflows
|
the scheduler (schedule:run) |
a task: Scheduled tasks
|
| Breeze, Fortify, Sanctum | Auth |
| gates and policies | a policy: Policies and authz
|
| broadcasting (Reverb, Pusher) | a live query: Realtime |
| Mailables | |
Storage disks |
Storage and uploads |
| Nova, Filament | Admin dashboard |
lang/*.php |
one flat catalog per locale: I18n |
| Pest, PHPUnit | Testing |
php artisan serve |
x dev |
| Laravel | Why |
|---|---|
| PHP and its packages | Bun only. A Composer package is rewritten or bought as a service |
| MySQL, SQLite, SQL Server | Postgres only, by design: Home |
| Blade, Livewire | pages render with SolidJS; interactive parts are islands. No converter |
| model events and observers | no implicit hooks: the write is an action or a mutator that says what it does (Actions) |
polymorphic relations (morphTo) |
model each target as its own foreign key (Entities and migrations) |
Laravel ids are bigint ($table->id()) and timestamps are created_at / updated_at. 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.
| Laravel stores | Branch |
|---|---|
users.password as $2y$… — bcrypt, Laravel's default driver |
proceed: verified natively, rewritten as argon2id on first login (Migrating an existing app) |
$argon2id$… (the argon2id driver) |
proceed: rehashed when weaker than the policy |
the session: an encrypted cookie keyed by APP_KEY
|
bridge it with your own verifier behind configureAuthenticator(), or keep the Laravel login until every user has signed in once (Auth) |
Ultimate — v30.9.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