Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Dynamic Settings Page Laravel Package

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.

Deep Wiki
Context7

Technical Evaluation

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.

  • Version lock (high). Filament 2 → 3 → 4 is a breaking migration. A 2023-06 plugin is a strong signal of 2.x-only; confirm composer.json requirements before anything else.
  • Provenance (high). The repository URL is unresolved in this record. You cannot verify license (presumably MIT), CI status, test coverage, issue responsiveness, or a security disclosure path. That is a supply-chain due-diligence gap, not a footnote.
  • Bus factor 1 (high). 27 stars, single maintainer, no release in roughly two years. Treat as effectively unmaintained.
  • Secret handling (medium). Settings pages are where API keys, SMTP credentials, and payment keys land. The package does not solve encryption-at-rest, redaction of secrets from form state, or audit logging — those are yours to add.
  • Schema-less persistence (medium). 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.
  • Cache coherence (medium). Settings are cached; saves must flush that cache across all nodes. In a multi-instance deployment with a shared cache this works, but any per-node array cache or config-cache staleness becomes a silent-drift failure mode.

Key questions to resolve before adoption.

  1. What are the exact composer.json constraints — Filament, Laravel, PHP, and spatie/laravel-settings?
  2. Where is the canonical repository, and is it MIT-licensed with tests and a CI badge?
  3. Does it support Filament 3.x/4.x, or is a fork required?
  4. Does it expose authorization hooks (policy/gate) per settings group, or is page access all-or-nothing?
  5. How does it behave with multi-tenancy — global settings only, or per-tenant scoping?
  6. Are secrets encrypted at rest, and are they masked in the UI and excluded from logs?

Integration Approach

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:

  • Adopt-as-is where a Filament 2 panel already exists and the package is already proven in that codebase. Vendor the package (path repository or a fork under your org) and pin to a commit SHA, not a tag.
  • Replace with 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.

  1. Spike (0.5 day). Install in a throwaway branch against the real app's Filament/Laravel versions. If composer resolution fails, stop — the decision is made.
  2. Model the settings (1 day). Define settings classes per domain (mail, billing, feature flags). This work is reusable regardless of UI choice.
  3. Authorization and secrets (0.5 day). Gate the page and each group; add encryption casts for credential fields; confirm secret masking.
  4. Persistence and cache (0.5 day). Confirm cache driver, flush-on-save behavior, and multi-node coherence.
  5. Cutover. Behind a feature flag, single environment first, then remaining environments.

Operational Impact

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.

  • Silent drift: save succeeds on one node, other nodes serve stale cached settings. Mitigate with a shared cache and explicit flush on save; add a health check that compares cached vs. persisted version.
  • Refactor breakage: renaming or deleting a settings class while a page references it throws on page load — an admin-only blast radius, but it takes the settings UI down entirely.
  • Partial writes: a multi-tab form saving several groups can leave a mixed state if one group's validation fails. Confirm atomicity per submission.
  • Secret exposure: misconfigured page authorization exposes credentials to any authenticated admin-panel user; combined with unencrypted storage this is the highest-severity failure.
  • Version skew: an unattended Filament upgrade breaks the page on deploy. Pin and test.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast