This is the minimal install path. Use it when you want LayupBuilder as a field on your own models and you do not want the bundled Pages resource in your Filament sidebar.
If you want the full Pages CMS (nested pages, scheduled publishing, frontend routes, SEO meta), follow the standard Installation instead.
Requirements
Same as the full install:
- PHP 8.3+
- Laravel 12+
- Filament 5
- Livewire 4
- A working Filament panel
Step 1: Install via Composer
composer require crumbls/layup
Step 2: Register the plugin
Add LayupPlugin to your Filament panel provider:
use Crumbls\Layup\LayupPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugins([
LayupPlugin::make(),
]);
}
The plugin registers the LayupBuilder field, the widget registry, and the theme system regardless of whether the Pages resource is enabled.
Step 3: Publish the config and disable the Pages resource
php artisan vendor:publish --tag=layup-config
Open config/layup.php and set pages.enabled to false:
// config/layup.php
'pages' => [
'enabled' => false,
// ...
],
This removes the Pages resource from your Filament sidebar and disables the public frontend routes.
Step 4: Run migrations
php artisan migrate
The package's migrations create two tables (layup_pages, layup_page_revisions). Even with pages.enabled = false, running these migrations is recommended -- the tables sit empty and cost nothing, and you can flip pages.enabled back on later without re-migrating.
Step 5: Publish Filament assets and storage symlink
php artisan filament:assets
php artisan storage:link
filament:assets registers the builder's CSS. storage:link makes uploaded images web-accessible (the field uses Laravel's default storage disk for media uploads).
Step 6: Generate the Tailwind safelist
php artisan layup:safelist
The field generates dynamic CSS classes (column widths, spacing, user-defined design tokens). Tailwind needs to know about them. Configure your Tailwind setup exactly as documented in the main install guide -- the steps are identical:
When pages.enabled = false, the auto-sync hook does not fire on saves (it is wired to the Page model). Run php artisan layup:safelist from your build pipeline, or hook a model event on whatever model holds your Layup content -- see Embedding the field.
Step 7: Verify
php artisan layup:doctor
The health check warns about the Pages resource being disabled -- that warning is expected and safe to ignore on this path.
Next: embed the field
You are ready to add LayupBuilder to your own forms. See Embedding the field for the model + form + render walkthrough.
Contributors
Thank you to everyone who has contributed to this package. Every pull request, bug report, and idea makes a difference.