beier/filament-pages
A Filament plugin for creating and managing pages in your admin panel. Build page resources with flexible content blocks, control publishing and visibility, and edit everything through a clean, native Filament interface. Ideal for adding simple CMS-style page management to Laravel applications power...
Architecture fit. The package is a thin vertical slice: a Page Eloquent model with migration, a Filament Resource for admin CRUD, and a front-end route/controller that resolves a slug to a Blade view. That is precisely the shape of the "small marketing/brochure site inside an existing Laravel app" requirement, and it is the right shape when the alternative is standing up a headless CMS or a full Laravel CMS (Statamic, October) for a handful of static pages.
Where it fits: tens to a few hundred editorial pages, managed by non-technical users who already have Filament admin access, on a site where content changes are occasional. Where it does not fit: revision history, scheduled publishing, multi-language trees, structured content blocks, per-page permissions, or headless delivery to multiple front ends. None of those are in a package whose own description calls it "a starting point."
Technical risk is dominated by lifecycle, not code quality. Archived, last release 2022-11-14, zero dependents. That release window predates Filament v3 (and v4), which split form/table namespaces and reworked the Resource contracts; assume the Resource will not boot on a current Filament install without a port. The second-highest risk is the front-end wildcard route — it will shadow existing application routes unless ordering and a not-found fallback are handled explicitly. The third is data model rigidity: adding SEO fields, publication state, or content sections means writing migrations against someone else's schema, which is fine but should be decided before any content exists.
Key questions before committing:
composer.json constraint permit them?Verdict: treat this as a reference implementation to fork and harden, not as a Composer dependency. At 52 stars and archived status, adopting it verbatim transfers an unpatchable liability into the request path of the public site.
Stack fit. Laravel + Filament + Blade, no exotic dependencies. On Filament v2 it can plausibly be Composer-installed; on v3+ plan on a port. Either way, vendor the source into the repo or a private package — do not require an archived public package in production.
Migration path. Fork → internal package or app/ namespace copy → upgrade Resource classes and route registration to our Filament major → harden → extend. The MIT license makes this clean; the absence of a maintainer makes it mandatory.
Compatibility checklist to verify in the spike: PHP constraint, Filament major, Laravel major, slug package dependency, published config/views, and whether the front route is registered by the package's service provider or must be added by hand (the latter is safer — explicit route registration lets us control middleware, prefix, and ordering).
Sequencing:
Maintenance. We become the maintainer. Steady state is roughly 5–10% of a backend engineer for a small site (dependency bumps, Filament upgrades), on top of the initial port. Filament ships majors quickly; expect a non-trivial migration every 12–18 months. Pin versions and upgrade deliberately rather than tracking latest.
Support. None from the author. Filament's community helps with Filament, not with this package; our defects are ours. There is no upstream to send a CVE fix to, which is the crux: a security issue in this code path is patched by us or not at all.
Scaling. Adequate for low thousands of pages at modest traffic once cached — uncached, each request costs a slug lookup plus a Blade render. Watch for N+1 if navigation loads page relations. For higher traffic, place the front route behind full-page cache or static export; the admin surface is never the bottleneck.
Failure modes to design against:
Ramp-up. Low for a mid-level Laravel developer — one to two days to read and own it. Low for editors, since it is a standard Filament resource. The real cost is not learning the package; it is accepting perpetual ownership of it, which should be an explicit, named decision rather than a side effect of a quick win.
How can I help you explore Laravel packages today?