Documentation
Filament CMS is a block-based, versioned CMS for Laravel and Filament. Pages are built from an ordered list of blocks. A block is a PHP class and a Blade view. A layout is an anonymous Blade component holding the page chrome and the regions blocks are placed into.
These pages follow the order of the developer guide rather than an alphabetical one. Read Installation first, then The data model. The rest can be read as needed.
Reference inside the panel
The panel generates the pages below from the registries rather than from anything written by hand:
Blocks & layouts (
/cms/gallery) β every registered block with its field contract and a rendered preview, and every layout with the regions it declares.Dashboard (
/cms/dashboard) β the panel's landing page, holding whatever widgets the application registers.
Where a table here disagrees with the panel, the panel is correct: it reads the registries directly.
Sections
-
Installation
Installing the package, wiring up the stylesheet, and creating the first administrator.
-
The data model
The six entities of the data model and the path an HTTP request takes through them.
-
Multilingual sites
This page explains how one site serves the same page in several languages, how translations are created and linked, and how to rename a locale.
-
Blocks
Generating a block, how discovery and registration work, every method on the contract, and how to override one.
-
Layouts
Anonymous Blade components that provide the page chrome, and how they are discovered and registered.
-
Regions
Named areas blocks can be placed into, how the editor detects them, and shared regions whose blocks belong to the layout.
-
Draft view and live reload
Which users see drafts on the public site, the draft banner, sharing a draft by signed link, and how the site window reloads after a save.
-
Width presets
How --cms-block-max resolves, and how to change what the measurements mean.
-
Editing on the page
How a signed-in editor edits, adds, duplicates and reorders blocks directly on the public site, without returning to the admin panel.
-
Content types
How to generate, register and configure a content type: its methods, routing, capability toggles, block rules, panel behavior and structured data.
-
Skins and the design-token system
Every color, font and measurement is a custom property declared once. A skin reassigns them.
-
Media
The site's media library, and the rules that keep a media id stored in a block resolving to the same image.
-
Forms
Building a form in the admin panel, placing it on a page with the Form block, and reading the submissions in the panel.
-
Permissions
Which users may perform which actions in the admin panel, decided by Laravel's Gate against a fixed vocabulary of abilities.
-
Notifications
Messages to your team in Slack or by email when content changes, sent only for the events you select.
-
Caching
The package caches whole pages, as rendered HTML, for anonymous GET requests only.
-
Search
How the site search builds its index, matches and ranks queries, and how to add a search page or replace the backend.
-
Tutorials
Four step-by-step tutorials: a class-based block, the same block as a Livewire block, a page layout and a skin, each from the Artisan generator to a working result on the site.
-
The MCP server
The MCP server exposes the admin panel's operations to an AI client over stdio or HTTP.
-
The delivery API
The delivery API serves read-only JSON to a frontend that renders its own components.
-
Integrating another package
This page explains how another package owns URLs, is referenced from CMS content, reacts to content events and invalidates cached pages.
-
Testing your work
This page explains how to test blocks, content types and layouts in an application, and how to run the package's own suite.
-
Known traps
Failures that raise no error, each listed by its symptom first.
-
Your application's data
Displaying rows from your application's own Eloquent tables on pages whose surrounding copy an editor still controls in the CMS.
-
Command and config reference
This page lists every console command, every config key with its default, and the blocks in the block picker.