weslal/nova-settings-tool
A Laravel Nova tool that adds a settings management page to your admin panel, letting you view and edit application configuration values from Nova instead of editing files. Useful for managing editable site options and environment-specific settings in one place.
What this package actually is. weslal/nova-settings-tool is a Laravel Nova tool — not a general-purpose settings library. It registers a Nova tool (service provider, tool routes, compiled Vue assets) that exposes a UI for editing database-backed key/value settings whose groups and fields are declared in application code. The value proposition is narrow but real: admins edit runtime configuration without touching .env or config files, and developers retain a code-level contract for what settings exist.
Architecture fit. Good only under a specific precondition: the application already runs Laravel Nova. Nova is a first-party but paid, closed-source product with per-site licensing and a history of breaking tool APIs between major versions (Nova 1/2 → 3 → 4 → 5). This package's last release is December 2018, which places it in the Nova 1.x era — roughly Laravel 5.7/5.8 and PHP 7.1–7.3. That is the central architectural fact: the package is coupled to a proprietary, fast-moving host, and it stopped moving seven-plus years ago.
Integration feasibility. Mechanically trivial — composer require, register the tool in NovaServiceProvider::tools(), publish/run migrations, declare a settings schema. Practically, feasibility is gated on composer.json constraints resolving against our Laravel, PHP, and Nova versions. On PHP 8.1+ and Nova 4/5, expect a hard conflict; the resolution work is a fork-and-modernize effort (Nova 4+ tool API, Vue 3 asset pipeline), not a configuration change.
Technical risk: high.
Key questions for the spike.
require constraints for laravel/nova, illuminate/*, and PHP — and which Nova major do they resolve to?Verdict. Do not adopt as a dependency. Evaluate as a reference implementation or a fork candidate, and benchmark it against spatie/laravel-settings (code-defined settings classes with typed properties and migrations) plus a thin custom Nova resource. That combination is maintained, PHP 8-compatible, and removes the coupling between our settings storage and a 2018 Nova tool API.
Stack fit. Laravel + Nova on PHP 7.x: viable as-is, with a fork pinned into our repo. Laravel + Nova 4/5 on PHP 8.2+: not viable without a rewrite of the tool's frontend and route registration. Laravel without Nova: not applicable — do not pull a Nova license to obtain key/value settings.
Migration path (recommended).
spatie/laravel-settings with a custom Nova resource for the admin UI — budget roughly the same for the UI, materially less for the storage layer.Compatibility checks before committing. composer.json constraints versus our Laravel/PHP matrix; Nova tool asset publishing and nova:publish behavior after a Nova upgrade; migration filenames colliding with existing tables; the settings table name being hardcoded.
Sequencing for a production rollout.
Settings facade or repository injected into services; never raw DB queries from controllers or Blade.Do not sequence this as "install and let admins in." The blast radius of a mis-set global setting is the whole application; validation and audit must land before the first human writes through the UI.
Maintenance. Effectively 100% self-owned. There is no upstream to patch, no release cadence to track, no compatibility work being done for us. If we fork, assign a named owner and add the fork to the dependency-review list; if we vendor, pin the commit and document the delta from upstream. Either way, the total cost of ownership exceeds the cost of the maintained alternative.
Support. No maintainer responsiveness to rely on. For an internal admin tool the support burden is low-frequency but high-severity: when it breaks, it breaks during a Nova upgrade or a PHP upgrade, and it breaks silently (tool disappears from the nav, routes 404) or loudly (settings page 500s). Plan for a fix-forward capability, not a support contract.
Scaling. The package itself is not a scaling concern — the settings table is tiny and write traffic is human-paced. The concern is read amplification: if settings are fetched from the database on every request, that is one extra query per request across every web node and queue worker. Mandate cache-on-read (Redis or the config cache) with invalidation on save, and verify invalidation correctness on a multi-node deployment — a stale-cache bug here presents as "the admin changed it and nothing happened," which erodes trust in the tool fast. If secrets are stored, encrypt at rest and confirm they never land in logs or in the cache in plaintext.
Failure modes.
Ramp-up. Low for a Laravel developer familiar with Nova — a day to understand the tool, perhaps two to understand the fork. The real onboarding content is not the package but our conventions around it: the settings contract, the cache invalidation path, the permission model, and the audit/rollback procedure. Write those down as a short internal runbook before the first operator gets access, because the package will not document them for us.
How can I help you explore Laravel packages today?