inerba/filament-db-config
DB Config is a lightweight Filament plugin offering a database-backed key/value store for application settings and editable content. Manage config values and content directly from your Filament admin panel without touching files or redeploying.
Architecture fit
Integration feasibility
composer require → publish config + migration → php artisan migrate → php artisan make:db-config {Group} → fill in fields. Reads via db_config(), @db_config, or the static class; safe_db_config() for boot-time paths.form(Form $form) method while Advanced Usage and the bundled agent skill use content(Schema $schema); the README documents make:db-config {name} {panel} with a second argument while the shipped SKILL.md explicitly forbids one. Verify every signature against the installed version before your team writes patterns around it.Technical risk
null (forever). Cache invalidation correctness is therefore a production-critical behavior, not an optimization detail.Key questions
canAccess(), policies, or nothing beyond panel access?migrate? Is the missing-table path graceful?getGroup() becomes a per-request cost?Stack fit
Migration path
vendor:publish tags (config and migrations), migrate, then one make:db-config call per settings surface. Roughly half a day for a first working page.db_config table is a plain key/value JSON store, so exiting is a script that reads rows and writes them into config files or a typed Settings class. Budget under a day. The real switching cost is any Blade templates that adopted @db_config.Compatibility
db_config() function and a @db_config Blade directive at boot — check for name collisions with existing helpers, and confirm CI/container boot tolerates a missing table (safe_db_config()).Sequencing
config/ vs the database, group naming convention, and the rule "no secrets, no per-tenant data."canAccess()/policy gating to every generated page against a dedicated permission, not just panel access.getDefaultData() plus a seeder so fresh environments aren't blank and staging/prod start aligned.safe_db_config() in providers, middleware, and any boot-time path.Maintenance
Support
Scaling
getGroup() loads every key in a group, so keep groups small and avoid parking large rich-text blobs where they are read on every page render; and cold-cache stampedes on high-traffic pages are unmitigated by the package.Failure modes
migrate → missing table → app-wide 500 on any page touching the helper.Ramp-up
form() vs content() split and the README/agent-skill contradiction reliably cause rework. Publish a short internal readme pinning the package version, the group naming convention, the authorization requirement, and the "no secrets" rule.Verdict
How can I help you explore Laravel packages today?