Filamentor is a powerful, flexible page builder plugin for Laravel Filament that empowers you to create dynamic pages with a modern drag-and-drop interface. Build professional layouts without writing code using an intuitive grid-based system.
Filamentor relies on TailwindCSS for its layout system, particularly for:
grid-cols-*
classes)p-*
, m-*
classes)Make sure your layout includes Tailwind CSS.
composer require geosem42/filamentor
php artisan filamentor:install
This command will:
/public/js/filamentor/filamentor.js
/public/css/filamentor/filamentor.css
After installing the package, run the migrations:
php artisan migrate
This will create the necessary database tables for pages, layouts, and related entities.
Add the following route to your routes/web.php
:
Route::get('/{slug}', [App\Http\Controllers\PageController::class, 'show'])->name('page.show');
To ensure dynamic grid classes work properly, add the following to your tailwind.config.js
file:
module.exports = { // ...other config safelist: [ 'grid-cols-1', 'grid-cols-2', 'grid-cols-3', 'grid-cols-4', 'grid-cols-5', 'grid-cols-6', 'grid-cols-7', 'grid-cols-8', 'grid-cols-9', 'grid-cols-10', 'grid-cols-11', 'grid-cols-12' ], // ...other config}
Add the Filamentor plugin to your Filament panel provider in app/Providers/Filament/AdminPanelProvider.php
:
use Geosem42\Filamentor\FilamentorPlugin; public function panel(Panel $panel): Panel{ return $panel // ...other configuration ->plugins([ // ...other plugins FilamentorPlugin::make(), ]);}
If you're using the Vue stack, run:
npm run build
After installation, you'll find the Filamentor page builder in your Filament admin panel. You can create and manage pages through the interface.
The Filamentor page templates (both Vue and Livewire versions) do not come pre-integrated with any application layout. You will need to manually include them in your own application layout to ensure proper styling, navigation, and site structure.
For example:
resources/views/pages/show.blade.php
in your layout.resources/js/Pages/Page.vue
within your AppLayout
layout component.This design gives you complete flexibility to integrate Filamentor pages within your existing site structure.
If you selected the Vue stack, ensure Inertia.js is properly installed and configured in your application. The page rendering happens through the Inertia Page component published during installation.
If you selected the Livewire stack, ensure Livewire is properly installed. The page rendering will use the Livewire components published during installation.
For proper SEO functionality with Filamentor's Livewire implementation, your layout must include a @stack('meta')
directive in the <head>
section.
The installation command will publish the following files depending on your selected stack.
resources/js/Pages/Page.vue
resources/js/Components/Elements/TextElement.vue
resources/js/Components/Elements/ImageElement.vue
resources/js/Components/Elements/VideoElement.vue
app/Http/Controllers/PageController.php
app/Livewire/Page.php
app/Livewire/Elements/TextElement.php
app/Livewire/Elements/ImageElement.php
app/Livewire/Elements/VideoElement.php
app/Http/Controllers/PageController.php
resources/views/livewire/page.blade.php
resources/views/pages/show.blade.php
resources/views/livewire/elements/text-element.blade.php
resources/views/livewire/elements/image-element.blade.php
resources/views/livewire/elements/video-element.blade.php
If you encounter issues with the Filamentor UI after installation:
The MIT License (MIT). Please see License File for more information.
I'm a product-focused developer who turns coffee into code and ideas into reality. My sweet spot is crafting robust web applications with Laravel and Vue.js, where I blend backend stability with smooth frontend experiences. While PHP and Vue.js are my daily companions, I've ventured into React and React Native territory to build cross-platform solutions.