Von Laravel Nova zu FilamentPHP: Warum wir den Admin-Panel-Wechsel nicht bereuen.

Geschrieben von Chris Schön am Apr 3, 2026

Header image forVon Laravel Nova zu FilamentPHP: Warum wir den Admin-Panel-Wechsel nicht bereuen

Nova hat uns jahrelang gute Dienste geleistet. Schnell ein Admin-Panel aufsetzen, Ressourcen definieren, fertig. Aber irgendwann häuften sich die Momente, in denen wir mehr Zeit damit verbrachten, Nova zu umgehen, als es zu nutzen. Spätestens als ein Kunde ein komplett individuelles Dashboard-Design wollte und wir zum dritten Mal gegen Novas Grenzen liefen, war klar: Wir brauchen eine Alternative.

Heute läuft FilamentPHP in fast allen unseren Laravel-Projekten. Und wir bereuen nichts.

Das Problem: Warum Nova an seine Grenzen stößt

Laravel Nova ist ein solides Tool – keine Frage. Aber es ist ein geschlossenes Ökosystem. Das bedeutet konkret:

Das alles sind keine Dealbreaker für sich. Aber in Summe haben sie uns immer öfter ausgebremst.

FilamentPHP vs. Laravel Nova: Der direkte Vergleich

Statt langer Prosa – hier die Unterschiede, die für uns den Ausschlag gaben:

Kriterium Laravel Nova FilamentPHP
Lizenz Proprietär, 199 $/Jahr/Projekt MIT-Lizenz, kostenlos
Tech-Stack Vue.js Livewire + Alpine.js + Blade
Design-Anpassung Begrenzt, Custom Tools nötig Vollständig anpassbar via Blade
Plugin-Ökosystem Marketplace (teils kostenpflichtig) Wachsende Open-Source-Community
Formulare & Tabellen Gut, aber starr Extrem flexibel, eigene Layouts
Multi-Tenancy Zusatzpakete nötig Nativer Support
Community-Beiträge Nicht möglich (Closed Source) Pull Requests willkommen

Der entscheidende Punkt: FilamentPHP nutzt denselben Stack, den wir ohnehin in unseren Laravel-Projekten einsetzen – Livewire und Blade. Kein Context-Switch, keine separate Build-Pipeline für Vue-Komponenten.

Unsere Entscheidung: Warum FilamentPHP die bessere Wahl ist

Wir haben nicht über Nacht gewechselt. Zuerst kam FilamentPHP in ein neues Projekt als Test. Nach zwei Wochen war klar: Die Produktivität ist höher, die Anpassbarkeit eine andere Liga.

Konkret bedeutet das für uns:

Zukünftige Laravel-Projekte setzen wir ausschließlich mit FilamentPHP um. Für bestehende Nova-Projekte migrieren wir schrittweise – und genau dabei hilft uns Claude Code enorm.

Migration mit Claude Code: Schritt-für-Schritt-Anleitung

Eine Nova-zu-Filament-Migration klingt nach viel Arbeit. Ist es auch – wenn du alles manuell machst. Mit Claude Code lässt sich der Aufwand aber drastisch reduzieren.

1. Brainstorming: Scope definieren

Starte eine Session mit Claude Code und beschreibe dein bestehendes Nova-Setup:

claude "Analysiere meine Nova-Resources in app/Nova/ und erstelle eine 
Übersicht aller Ressourcen, Actions, Filters und Lenses. 
Liste Abhängigkeiten und Custom Tools auf."

Claude Code durchsucht dein Projekt und gibt dir eine strukturierte Übersicht. Damit weißt du genau, was migriert werden muss.

2. Plan erstellen mit /plan

Jetzt wird es konkret. Nutze den /plan-Command, um einen Migrationsplan zu erstellen:

/plan Migriere die Nova-Resource UserResource zu einem FilamentPHP 
Resource. Berücksichtige alle bestehenden Fields, Filters und Actions. 
Erstelle auch die zugehörigen Pest-Tests.

Claude Code erstellt einen detaillierten Plan: welche Dateien angelegt werden, welche Änderungen nötig sind und in welcher Reihenfolge. Du reviewst den Plan, bevor eine Zeile Code geschrieben wird.

3. Code generieren lassen

Nach dem Review gibst du grünes Licht. Claude Code erstellt die Filament-Resources, Pages und Widgets. Ein typisches Ergebnis:

// app/Filament/Resources/UserResource.php
use Filament\Resources\Resource;
use Filament\Forms;
use Filament\Tables;

class UserResource extends Resource
{
    protected static ?string $model = User::class;
    protected static ?string $navigationIcon = 'heroicon-o-users';

    public static function form(Forms\Form $form): Forms\Form
    {
        return $form->schema([
            Forms\Components\TextInput::make('name')->required(),
            Forms\Components\TextInput::make('email')->email()->required(),
            Forms\Components\Select::make('role')
                ->options(Role::pluck('name', 'id')),
        ]);
    }

    public static function table(Tables\Table $table): Tables\Table
    {
        return $table->columns([
            Tables\Columns\TextColumn::make('name')->searchable()->sortable(),
            Tables\Columns\TextColumn::make('email')->searchable(),
            Tables\Columns\TextColumn::make('created_at')->dateTime('d.m.Y'),
        ]);
    }
}

Laravel Boost nutzen: KI-gestützte Pest-Tests schreiben

Hier kommt ein entscheidender Schritt, den viele bei der Migration vergessen: Tests. Bevor du Claude Code loslässt, binde Laravel Boost ein:

composer require laravel/boost --dev

Laravel Boost gibt Claude Code den nötigen Kontext über dein Projekt – Modelle, Beziehungen, Routen. Damit generiert Claude Code nicht nur die Filament-Resources, sondern auch passende Pest-Tests:

// tests/Feature/Filament/UserResourceTest.php
use App\Models\User;
use function Pest\Livewire\livewire;

it('can render the user list page', function () {
    $this->actingAs(User::factory()->admin()->create());
    
    $this->get(UserResource::getUrl('index'))
        ->assertSuccessful();
});

it('can create a new user', function () {
    $this->actingAs(User::factory()->admin()->create());
    
    livewire(CreateUser::class)
        ->fillForm([
            'name' => 'Max Mustermann',
            'email' => 'max@example.com',
            'role' => 1,
        ])
        ->call('create')
        ->assertHasNoFormErrors();
    
    expect(User::where('email', 'max@example.com')->exists())->toBeTrue();
});

So stellst du sicher, dass die Migration nichts kaputt macht – und hast direkt eine Testsuite für das neue Filament-Setup.

Der Workflow: Brainstorming, Planning, Code-Generierung

Zusammengefasst sieht unser optimaler Migrations-Workflow so aus:

  1. Analyse – Claude Code scannt das bestehende Nova-Projekt
  2. Brainstorming – Gemeinsam mit Claude den Migrationsscope festlegen
  3. Planning/plan erstellt den detaillierten Migrationsplan
  4. Laravel Boost einbinden – Damit Claude Code den vollen Projektkontext hat
  5. Code-Generierung – Resource für Resource migrieren lassen
  6. Tests – Pest-Tests automatisch generieren und ausführen
  7. Review – Manuelles Review und Feinschliff

Pro Resource dauert das etwa 15–30 Minuten statt mehrerer Stunden manueller Arbeit. Bei einem Projekt mit 20 Resources sparst du locker zwei bis drei Arbeitstage.

Fazit: Langfristige Vorteile und nächste Schritte

Der Wechsel von Nova zu FilamentPHP war für uns keine spontane Entscheidung, sondern das Ergebnis wachsender Frustration mit einem geschlossenen System. Die Vorteile nach der Migration:

Wenn du den Wechsel planst, fang klein an: Nimm ein neues Projekt oder ein internes Tool und setze es mit FilamentPHP um. Sobald du die Flexibilität erlebst, stellt sich die Frage nach Nova nicht mehr. Und für die Migration bestehender Projekte – lass Claude Code die Schwerarbeit machen. Dafür ist es da.