Een Filament admin panel bouw je in acht stappen: requirements, datamodel, panel, resources, rechten, dashboards, testen en deploy. Het framework genereert in minuten een werkende CRUD. De echte tijd zit in datamodel, rechten en testen. Daar beslis je of je backoffice over twee jaar nog werkt.
Een Filament admin panel bouw je in acht stappen: requirements, datamodel, panel, resources, rechten, dashboards, testen en deploy. Het framework genereert in minuten een werkende CRUD. De echte tijd zit in datamodel, rechten en testen. Daar beslis je of je backoffice over twee jaar nog werkt.
Dit stappenplan is voor beslissers én developers. De eerste helft gaat over keuzes. De tweede helft over uitvoering. Onze eigen backoffice draait op Filament: blog, leads, afspraken, cases, migratiepaden en een database met Magento-shops. Wat hieronder staat, komt uit die praktijk.
Wat is een Filament admin panel precies?
Filament is een open source (MIT) framework voor admin panels en interne apps op Laravel. Het draait op Livewire, Alpine.js en Tailwind CSS. Het is gratis. Betaalde plugins van derden bestaan, maar heb je niet nodig.
Een "panel" is een complete beheeromgeving: login, navigatie, CRUD-schermen, filters, acties en dashboards. Je schrijft PHP. Geen apart JavaScript-frontend, geen losse API. Dat is de reden dat een klein team er snel mee is.
De actuele lijn is v5, uitgebracht in januari 2026. Die heeft dezelfde API als v4 (augustus 2025) en voegt vooral Livewire 4-support toe. De vereisten: PHP 8.2+, Laravel 11.28+ en Tailwind CSS v4.1+. Meer achtergrond lees je op onze pagina over Filament voor Laravel.
Stap 1: welke requirements leg je vast vóór de eerste regel code?
Leg vast wie wat doet met welke data, niet welke schermen je wilt. Schermen volgen uit processen. Andersom gaat het mis.
Beantwoord deze vragen op papier:
- Gebruikers: wie logt in? Interne medewerkers, klanten, leveranciers? Dat bepaalt hoeveel panels je nodig hebt.
- Processen: welke taken doen mensen dagelijks? Orders controleren, leads opvolgen, voorraad corrigeren.
- Bronnen: waar komt data vandaan? Eigen database, Magento, Shopify, ERP, Excel.
- Rechten: wie mag lezen, wie mag wijzigen, wie mag verwijderen?
- Stuurinformatie: welke 3 tot 5 cijfers wil management elke ochtend zien?
De eerlijke versie: de meeste backoffices mislukken niet op techniek. Ze mislukken op een proces dat niemand heeft uitgeschreven. Twee uur met de mensen die het systeem gaan gebruiken, scheelt weken herbouw.
Twijfel je nog tussen Filament en Nova? Lees eerst onze vergelijking Laravel Nova vs Filament.
Stap 2: hoe ontwerp je het datamodel?
Ontwerp eerst je Eloquent-models, migrations en relaties. Filament leest je models. Een slordig datamodel geeft een slordig panel.
Concreet:
- Eén model per begrip uit de business. Order, Klant, Product, Lead. Niet "Data" of "Record".
- Relaties expliciet.
belongsTo,hasMany,belongsToMany. Filament gebruikt ze voor selects, relation managers en filters. - Statussen als enum. Een PHP-enum voor orderstatus voorkomt typfouten en geeft je badges en filters bijna gratis.
- Indexen op filterkolommen. Elke kolom waar gebruikers op filteren of sorteren, verdient een index.
- Soft deletes waar nodig. Bij orders en klanten wil je herstel kunnen doen.
Komt data uit externe systemen? Dan hoort de sync in jobs en queues, niet in het panel. Het panel toont en bewerkt. De integratielaag synchroniseert. Hoe we die laag bouwen, staat op Laravel integraties.
Stap 3: hoeveel panels heb je nodig?
Begin met één panel. Voeg een tweede panel alleen toe als een andere doelgroep een wezenlijk andere omgeving nodig heeft, zoals klanten of leveranciers.
Installatie in een bestaand Laravel-project:
composer require filament/filament:"^5.0"
php artisan filament:install --panels
Een extra panel maak je met php artisan make:filament-panel klant. Elk panel krijgt een eigen PanelProvider in app/Providers/Filament/. Daar stel je pad, kleuren, login en middleware in.
| Situatie | Aanpak |
|---|---|
| Alleen interne medewerkers | 1 panel, rechten via rollen |
| Medewerkers + klanten | 2 panels: admin en klant |
| Meerdere organisaties in één app (SaaS) | 1 panel met multi-tenancy |
| Leveranciers die orders inzien | Apart panel of klantpanel met eigen rol |
Een klantpanel is in feite een klantportaal. Daar gelden andere eisen voor UX en beveiliging dan voor een interne backoffice.
Stap 4: hoe bouw je resources, forms en tables?
Een resource is de Filament-laag rond één model: lijst, aanmaken, bewerken en eventueel bekijken. Je genereert hem met één commando en verfijnt daarna.
php artisan make:filament-resource Order --generate --view
--generate bouwt form en table op basis van je databasekolommen. --view voegt een read-only weergavepagina toe. In v4 en v5 krijg je een nette mappenstructuur: de resource zelf, een Pages/-map, een Schemas/-map voor het form en een Tables/-map voor de tabel.
Wat je daarna doet, bepaalt de kwaliteit:
- Tables: kies 5 tot 8 kolommen. Niet alles. Voeg filters toe op status en datum. Maak zoeken alleen actief op kolommen waar gebruikers echt op zoeken.
- Forms: groepeer velden in secties. Valideer in het form én in de database.
- Relation managers: toon orderregels bij een order, contactmomenten bij een lead.
- Actions: "Markeer als betaald", "Stuur opnieuw naar ERP". Eén klik in plaats van vijf velden.
In de praktijk lijkt de gegenereerde versie bijna af. Dat is hij niet. De laatste stap, van generiek naar "zo werkt ons bedrijf", kost de meeste tijd. Die stap maakt ook het verschil voor gebruikers.
Stap 5: hoe regel je rollen en rechten?
Filament volgt de Laravel model policies. Zonder policy is een resource voor iedere ingelogde gebruiker zichtbaar. Regel dit dus vóór livegang, niet erna.
Twee lagen:
- Toegang tot het panel. In productie moet je User-model de
FilamentUser-interface implementeren. Doe je dat niet, dan kan volgens de Filament-docs niemand inloggen in productie. - Rechten per resource. Policies met
viewAny,view,create,update,delete.viewAnybepaalt ook of het menu-item zichtbaar is.
use Filament\Models\Contracts\FilamentUser;
use Filament\Panel;
class User extends Authenticatable implements FilamentUser
{
public function canAccessPanel(Panel $panel): bool
{
return match ($panel->getId()) {
'admin' => $this->is_staff,
'klant' => $this->customer_id !== null,
default => false,
};
}
}
Heb je meer dan drie rollen? Dan is Filament Shield een veelgebruikte plugin. Die koppelt spatie/laravel-permission aan Filament en ondersteunt v5. Je beheert rollen dan in het panel zelf. Een uitgebreide uitleg staat in rollen en rechten met Shield.
Zet daarnaast multi-factor authentication aan voor admins. Dat zit sinds v4 ingebouwd in Filament.
Stap 6: welke dashboards en widgets bouw je?
Bouw een dashboard met maximaal vijf cijfers waar iemand op stuurt. Geen grafiek omdat het kan.
Filament heeft drie typen widgets die je het meest gebruikt:
- Stats overview: kaartjes met een getal en een trend. Omzet vandaag, open orders, nieuwe leads.
- Charts: lijn- of staafdiagrammen op basis van Chart.js.
- Table widgets: een korte lijst, zoals "orders die langer dan 48 uur open staan".
De rekenstap: stel dat vijf medewerkers elke ochtend 15 minuten in Excel cijfers bij elkaar zoeken. Dat is ruim 6 uur per week, ruim 300 uur per jaar. Eén goed dashboard haalt dat grotendeels weg. Dat is een rekenvoorbeeld, geen klantcase. Reken het voor je eigen team door.
Let op performance. Een widget die bij elke pageload een COUNT over een miljoen orders draait, maakt je panel traag. Cache zware queries of reken ze vooruit in een scheduled job. Meer over stuurinformatie lees je bij Laravel dashboards.
Stap 7: hoe test je een Filament panel?
Test resources, acties en rechten met Pest of PHPUnit. Filament-pagina's zijn Livewire-componenten. Je test ze dus met de Livewire-testhelpers.
Een minimale test voor een lijst- en aanmaakpagina, in de syntax uit de Filament-docs:
use App\Filament\Resources\Orders\Pages\CreateOrder;
use App\Filament\Resources\Orders\Pages\ListOrders;
use App\Models\Order;
it('toont orders', function () {
$orders = Order::factory()->count(5)->create();
livewire(ListOrders::class)
->assertOk()
->assertCanSeeTableRecords($orders);
});
it('maakt een order aan', function () {
livewire(CreateOrder::class)
->fillForm(['reference' => 'TEST-001'])
->call('create')
->assertNotified()
->assertRedirect();
});
Wat je minimaal test:
- Rechten: kan een gebruiker zonder rol de resource openen? Dat moet falen.
- Custom actions: "Stuur naar ERP" moet de juiste job dispatchen.
- Validatie: verplichte velden en unieke waarden.
- Tenant-scheiding: ziet klant A nooit data van klant B?
Wat niemand je vertelt: de standaard CRUD hoef je nauwelijks te testen. Filament test die zelf. Jouw risico zit in maatwerk en rechten. Daar gaan je tests naartoe. Een uitgewerkte aanpak staat in Filament testen met Pest.
Stap 8: hoe deploy je naar Forge of Laravel Cloud?
Deploy zoals elke Laravel-app, plus één Filament-commando: php artisan filament:optimize. Dat cachet componenten en iconen. Kies je hosting op basis van hoeveel controle je wilt.
Het deploy-script bevat minimaal:
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize
php artisan filament:optimize
Laat filament:upgrade in het post-autoload-dump-script van je composer.json staan. Zet OPcache aan op de server. Draai de cache-commando's niet lokaal, anders ziet Filament nieuwe componenten niet.
| Laravel Forge | Laravel Cloud | |
|---|---|---|
| Model | Servermanagement op eigen VPS (DigitalOcean, AWS, Hetzner of Laravel VPS) | Volledig managed platform op AWS |
| Prijs (bron: laravel.com, okt 2026) | Vast: $12, $19 of $39 per maand + serverkosten | Vanaf $5 per maand + gebruik; Growth $20, Business $200 |
| Zero-downtime deploys | Ja, op één server | Ja |
| Autoscaling | Zelf regelen | Ingebouwd vanaf Growth (tot 10 replicas) |
| Controle over server | Volledig | Beperkt |
| Past bij | Vaste load, eigen beheer, meerdere stacks | Wisselende load, geen serverbeheer willen |
Voor een interne backoffice met tientallen gebruikers is Forge met één degelijke server meestal genoeg. Cloud wordt interessant als het panel ook klanten bedient en de load piekt. Meer over beide: Laravel Forge en Laravel Cloud.
Vergeet na livegang de basis niet: queue-workers draaien, scheduler actief, back-ups getest, logging en monitoring aan.
Hoe lang duurt het bouwen van een Filament admin panel?
Dat hangt af van het aantal resources, integraties en rollen. Een panel met vijf resources zonder koppelingen staat in dagen. Een backoffice met ERP-koppeling, drie rollen en dashboards duurt weken.
| Scope | Kenmerken | Indicatie doorlooptijd |
|---|---|---|
| Klein | 3-6 resources, 1 rol, geen koppelingen | 1-2 weken |
| Middel | 8-15 resources, 2-3 rollen, dashboards, 1 koppeling | 4-8 weken |
| Groot | Meerdere panels, multi-tenancy, meerdere koppelingen | 2-4 maanden |
Dit zijn indicaties uit ervaring, geen offerte. Integraties zijn bijna altijd de grootste onzekere post. Een uitgewerkte kostenopbouw lees je in wat een Filament admin panel kost.
Wanneer is Filament níet de juiste keuze?
Filament past niet als je publieke frontend de hoofdzaak is. Het is gebouwd voor beheer, niet voor marketingpagina's of een webshop-checkout.
Kies iets anders als:
- Je geen Laravel draait en dat niet wilt. Filament zonder Laravel bestaat niet.
- Je alleen een paar tabellen wilt bewerken. Een spreadsheet of low-code tool is dan goedkoper.
- Je een volledig eigen UI-ontwerp eist dat ver afwijkt van Filament. Dan bouw je tegen het framework in.
- Je webshop al een goede backoffice heeft voor het proces in kwestie. Bouw dan alleen wat ontbreekt.
Samengevat
- Start met processen en rechten, niet met schermen.
- Een schoon datamodel met enums, relaties en indexen maakt het panel bijna vanzelf goed.
- Begin met één panel. Voeg alleen een tweede toe voor een echt andere doelgroep.
make:filament-resource --generateis een startpunt, geen eindproduct.- Policies en
FilamentUserregelen vóór livegang. Anders kan niemand inloggen, of juist iedereen alles zien. - Dashboards: maximaal vijf stuurcijfers, zware queries cachen.
- Test rechten, custom actions en tenant-scheiding. Niet de standaard CRUD.
- Deploy met
filament:optimize. Forge voor controle, Cloud voor managed schaal.
Veelgestelde vragen
Is Filament gratis voor commercieel gebruik?
Ja. Filament is open source onder de MIT-licentie en mag commercieel gebruikt worden. Er zijn betaalde plugins van derden, maar die zijn optioneel. Je kosten zitten in development en hosting, niet in licenties.
Welke Filament-versie moet ik in 2026 kiezen voor een nieuw project?
Kies v5. Die heeft dezelfde API als v4 en voegt Livewire 4-support toe. Je hebt PHP 8.2+, Laravel 11.28+ en Tailwind CSS v4.1+ nodig.
Kan ik een Filament admin panel toevoegen aan een bestaande Laravel-app?
Ja. Je installeert het package en draait php artisan filament:install --panels. Daarna maak je resources voor je bestaande models. Een bestaande frontend blijft gewoon werken naast het panel.
Kan Filament data uit Magento of Shopify tonen?
Ja, via een integratielaag in Laravel. Je synchroniseert data met jobs en queues naar je eigen database, of haalt het live op via de API. Filament toont en bewerkt vervolgens die data. Voor grote volumes is synchroniseren meestal sneller en stabieler dan live API-calls.
Waarom kan niemand inloggen op mijn Filament panel in productie?
Waarschijnlijk implementeert je User-model de FilamentUser-interface niet. Buiten de local-omgeving vereist Filament een canAccessPanel()-methode. Zonder die methode weigert het panel elke login.
Heb ik Laravel Forge of Laravel Cloud nodig voor Filament?
Nee. Filament draait op elke server die Laravel draait. Forge en Cloud maken deployen en beheer makkelijker, maar zijn geen vereiste.
Wil je weten hoe dit stappenplan uitpakt voor jouw backoffice? Neem contact op, dan kijken we er samen naar.

Geschreven door Ruthger Idema
15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.
Meer over ons team →