bakerkretzmar/nova-settings-tool
A Laravel Nova tool for managing application settings directly from your Nova admin panel. Integrates with spatie/laravel-settings, letting you edit and organize multiple settings classes through a clean, configurable interface without writing custom screens. Quick to install and configure.
Architecture fit. The package is a presentation layer, not a settings engine. It registers a Nova tool that renders editing forms from standard Nova fields, and it delegates persistence to spatie/laravel-settings (and, per the package description, a file-backed JSON repository by default). That separation is the single most important architectural fact for a TPM: the settings contract — typed PHP classes, defaults, validation, grouping — stays in version control and under engineering review, so the tool cannot become a shadow source of truth. Fit is strong where the org already holds a Nova licence, runs a Laravel monolith, and needs a permissioned screen for trusted internal staff to tune runtime values (flags, thresholds, copy, endpoints). Fit is poor where Nova is not licensed, where the admin surface is being rationalised off Nova, or where the requirement is per-tenant/per-user configuration at scale. Because the tool is inert without Nova, treat this as a platform coupling decision, not a utility install — the adoption question is really "is Nova the committed admin surface for the next 18–24 months?"
Integration feasibility. Low engineering effort, high governance effort. Composer install, register in NovaServiceProvider::tools(), optionally publish config, and — if the backend is database-backed rather than file-backed — run the settings library's migrations. No queues, no runtime service, no front-end build. The realistic cost centre is deciding what becomes configurable: naming each setting, its default, its owning team, and its authorization policy. Budget the work as product/ops design plus a small engineering spike, not as an integration project.
Technical risk.
^4.0|^5.0 or moved to ^5.0 only determines whether this is a no-op or a sequenced prerequisite for the Nova upgrade. A five-minute read of composer.json on the tag resolves it.Key questions.
Stack fit. Laravel + Nova, Composer-managed. It sits alongside existing Nova tools without touching routing, queues, or the front end. If spatie/laravel-settings is already in the app, incremental adoption is genuinely small. If it is not, decide the backend library as a separate, independently valuable commitment first — do not smuggle a new persistence dependency in as a side effect of wanting a settings screen.
Migration path. 2.0.5 → 2.1.0 is a routine bump if and only if the Nova constraint stays dual. The procedure: composer update bakerkretzmar/nova-settings-tool, run backend migrations if that dependency moved, boot in staging, and exercise one read and one write per settings group. No data migration is expected — the release notes describe a compatibility change only. There is no functional gain for teams staying on Nova 4; 2.1.0 is a compatibility green light, not a reason to re-evaluate fit. For a net-new adoption, the sequencing below applies from step 2.
Compatibility. Two independent axes must be pinned explicitly in composer.json: (a) Nova major (4 vs 5), and (b) the Laravel/PHP floor implied by that Nova major. Pin Nova first, then let the tool resolve against it. Do not upgrade Nova and the tool in the same change — if the tool fails to register, you will not know which side broke it, and a tool-registration exception can take down the whole Nova panel rather than just the settings screen.
Sequencing.
composer.json on the 2.1.0 tag for Nova/Laravel/PHP ranges, and confirm the persistence backend. This gate decides whether the rest of the plan applies as written.Maintenance. Steady-state cost is low but non-zero, and it concentrates in three places: watching Nova releases (because Nova's major cycle gates this package's releases), watching spatie/laravel-settings for backend changes, and curating the settings definitions as the product evolves. Assign a named internal owner — a dependency with one upstream maintainer and zero dependents needs an internal champion empowered to pin, patch, or fork. Keeping settings classes UI-independent is the practical insurance policy: it reduces removal to a Composer line and a service-provider entry.
Support. Community-only. GitHub issues, no SLA, no vendor escalation path, effectively single-maintainer upstream. That is an acceptable posture for an internal convenience screen used by a handful of trusted staff; it is not acceptable for anything that would page someone at 2am. State this plainly to stakeholders rather than letting "it's just a settings page" imply it is risk-free.
Scaling. The tool scales fine along the axis that matters — number of settings groups and number of admin users is bounded and small. It does not scale along three axes: concurrent editors (last-write-wins; no conflict detection or optimistic locking), write volume (a settings screen is not a hot path), and per-tenant configuration (there is no tenancy model here — this is application-wide settings only). If the roadmap points toward per-tenant or per-user configurable behaviour, this package is the wrong foundation and should be recognised as such now rather than after adoption.
Failure modes. Rank-ordered by impact:
Ramp-up. Engineering ramp-up is genuinely hours: install, register, define a settings class, verify a round-trip. The organizational ramp-up is longer and is the part that decides success — setting owners, documentation of every exposed setting and its default, an access policy per group, and a short runbook telling admins what is safe to change and who to ask. Plan for a pilot group, a written decision on audit logging and secrets, and a review of the exposed surface after four to six weeks of real use. If the team is small enough that env vars plus a deploy are an acceptable change path, the governance overhead may exceed the value — and that is a legitimate outcome to recommend.
How can I help you explore Laravel packages today?