ibrahim-bedir/filament-dynamic-settings-page
A Filament plugin that generates dynamic settings pages from a simple configuration array, letting you build and manage app settings with form fields, tabs, and sections without writing custom pages or boilerplate code.
Architecture fit. ibrahim-bedir/filament-dynamic-settings-page is a thin presentation-layer plugin: it gives a Filament admin page that renders form fields back-ended by spatie/laravel-settings (settings modeled as typed PHP classes, persisted to a settings table and cached). Architecturally this is the right shape for a Laravel/Filament stack — settings-as-code, not settings-as-rows, so values are typed, discoverable via IDE, and testable without the UI. It introduces no new runtime service, no new datastore, no queue or worker dependency. That is a low-coupling, low-blast-radius addition.
Integration feasibility. Straightforward if and only if the Filament major version lines up. The last release is 2023-06-26 — immediately before Filament 3 GA — so the composer constraints almost certainly target Filament 2.x (^2.0) and PHP 8.1/Laravel 9–10. That is the single decisive feasibility question. The package's value-add over rolling your own is modest: it is essentially a reusable Page class plus schema/tab wiring. A competent Filament developer reproduces the same behavior against filament/spatie-laravel-settings-plugin (or raw spatie/laravel-settings) in one to three days.
Technical risk.
composer.json requirements before anything else.spatie/laravel-settings stores JSON payloads per settings class. It is not queryable or indexable at the field level, and it offers no built-in change history. For a global app configuration this is acceptable; for anything auditable it is not.Key questions to resolve before adoption.
composer.json constraints — Filament, Laravel, PHP, and spatie/laravel-settings?Stack fit. Good for Laravel 10 + Filament 2 admin panels. Poor-to-blocked for Filament 3/4 panels without a fork. If the target application is greenfield on Filament 4, do not adopt — the cost of porting exceeds the cost of writing the page.
Migration path. Two credible routes:
path repository or a fork under your org) and pin to a commit SHA, not a tag.filament/spatie-laravel-settings-plugin (first-party, maintained, tracks Filament releases) or a ~150-line in-house Page class over spatie/laravel-settings. Retain the pattern — settings classes as code, one group per tab — and discard the dependency. This is the default recommendation for any new work.Either way, the data model is portable: spatie/laravel-settings owns persistence, so swapping the UI layer later does not migrate data.
Compatibility. Verify three axes before committing: Filament major, Livewire major (2 vs 3 — a common silent breaker), and spatie/laravel-settings major. Filament 3 requires Livewire 3; a Filament 2-era plugin will not run there.
Sequencing.
Maintenance. Assume you own it. The realistic posture is a maintained fork under your org: pin the SHA, cherry-pick Filament compatibility fixes, and budget roughly 1–2 engineer-days per Filament major upgrade. The code surface is small enough that this is genuine, but the fork must be registered in your dependency inventory with an owner, or it becomes orphaned code nobody understands.
Support. No vendor, no SLA, no security channel. Community-only via GitHub issues with a two-year-quiet maintainer. Escalation path is your own engineers. Factor this into any compliance or vendor-risk review; for a regulated environment this package likely fails procurement without an internal fork agreement.
Scaling. Negligible runtime footprint — one admin page, settings read from cache. Two things do scale badly: (a) settings cache invalidation across many app nodes, and (b) JSON-blob settings if you later need per-tenant overrides, which this page does not model. Neither is a blocker at typical admin-panel traffic (tens of users), but per-tenant settings would require redesign, not configuration.
Failure modes.
Ramp-up. Low. A developer fluent in Filament and Livewire understands the pattern in under an hour; the settings-as-code convention matches standard Laravel configuration idioms. The real ramp-up cost is not learning the package — it is learning your fork's divergence from upstream, which is why the fork must be documented at the point of creation.
Verdict. Conditional reject for greenfield; viable only for existing Filament 2 panels where it is already in production. The functionality is worth 1–3 engineer-days to reproduce in-house, which is cheaper than the fork obligation, the provenance gap, and the unmaintained-dependency risk this package carries.
How can I help you explore Laravel packages today?