rudnev/laravel-settings
A Laravel package for storing and managing application settings in the database. It provides a simple API to read and write settings at runtime, making it easy to add editable configuration options without changing env files.
Runtime-editable configuration instead of redeploy-driven change. The core product capability is moving operational knobs out of config/*.php and into a database table with Settings::get() / Settings::set(). For a PM this converts a class of "we need an engineer, a PR, and a deploy slot to change one number" requests into an admin-screen change. That changes the shape of your roadmap: things like grace periods, retry thresholds, pagination sizes, feature toggles, onboarding copy, and rate limits become iterable by product and ops without engineering cycles. Quantify the baseline before adopting — count how many deploys in the last quarter were purely config edits. That number is your business case.
A cheap middle tier between hardcoded constants and a full feature-flag platform. The build-vs-buy ladder here is: hardcoded config (free, slow to change) → this package (small dependency, DB-backed, cached) → LaunchDarkly/Unleash/ConfigCat (real flag platform with targeting, audit, SDKs, a price). This package is the correct rung when you need one or two of the following: non-engineers editing values, environment-wide (not user-segment) toggles, or decoupling a config change from a release train. It is the wrong rung the moment you need per-user or per-cohort targeting, staged rollouts with percentage exposure, or an audit trail of who changed what when. Be honest about which side of that line the roadmap sits on — if progressive delivery is on the 12-month plan, buying into a thin package now is a migration you'll pay for twice.
Admin-panel surface area becomes a product decision, not an afterthought. Anything settable at runtime is a thing a customer or internal operator can break at 2am. This package gives you writes without opinion — no validation, no permissions, no audit. So the PM decision is not "should settings be editable" but "which settings, editable by whom, with what guardrails." That is a real scoping conversation and it belongs in the spec, not in the implementation ticket.
De-risking a monolith or legacy app without a re-platform. For a Laravel app where business rules are buried in config files, this is a low-cost way to claw back operational agility while a larger re-architecture is deferred. Good for validating whether operators will actually use a settings UI before investing in one.
Multi-tenant and per-environment configuration. A single key/value table can carry tenant-specific overrides if you scope it (the package itself doesn't define tenancy — that's your schema and access layer). Worth flagging in discovery: if per-tenant config is a near-term requirement, budget the wrapper work up front rather than discovering it after adoption.
Adopt when all of these hold:
composer.json constraint widened additively rather than narrowing before you commit.The adoption risk, stated plainly. Seven stars, zero known dependents, a single maintainer, and a last release in March 2024. Laravel ships a major annually; a package whose most recent signal is "caught up to 11" is roughly a cycle behind. That is not disqualifying for a small, simple, MIT-licensed package whose entire job is a key/value table — the code is small enough that "fork it if it dies" is a credible fallback, and you should say so out loud in the ADR. It is disqualifying if the package lands on a critical path with no owner. Frame the decision as: we are accepting a small maintenance tax in exchange for a large operational-velocity gain, and here is the named person who owns the fallback.
Look elsewhere when:
Build-vs-buy one-liner for the record: building this yourself is maybe two days of work — a migration, a repository with cache invalidation, a facade, tests. The package saves that sprint. The package does not save you from designing the admin UI, the validation rules, the permission model, or the audit story, which is where 80% of the real effort lives. Evaluate it as a two-day head start, not as a solved problem.
To the executive / steering group. One paragraph: "We're adopting a small, MIT-licensed library that lets us move operational settings — thresholds, limits, toggle states, copy — out of the codebase and into the database, editable without a deploy. Today every one of those changes costs an engineering ticket plus a release window; multiply by the number of such requests last quarter to get the recovered capacity. The dependency is small and the risk is bounded: if it stops being maintained we can replace it in about two days, because it does one simple job. It is not a feature-flag platform and it is not where secrets live — both of those boundaries are deliberate and documented." Lead with the deploy-count metric, not the technology.
To engineering. Be direct about the tradeoff and the constraints:
config:clear before cache:clear) and stale merged config is the classic false failure.Objection handling.
How can I help you explore Laravel packages today?