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

Laravel Settings Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

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.

When to Consider This Package

Adopt when all of these hold:

  • The stack is Laravel 10 or 11 on PHP 8.2+. The 2.4.0 release is a Laravel 11 compatibility bump and nothing else — verify the composer.json constraint widened additively rather than narrowing before you commit.
  • The setting surface is small and flat — dozens of scalars, not thousands of nested structures. The type-aware serialization covers string/number/bool/array; it is not a document store.
  • Values are read-mostly and environment-wide. Reads are cached with invalidation on write, so hot-path lookups are fine; high-frequency writes are not the design center.
  • Nothing sensitive goes in it. This is a plain DB table with no encryption, no audit log, no access control. Secrets stay in a vault or env; that is not a limitation to work around, it's a hard boundary.
  • The value of "change without deploy" exceeds the cost of an unmaintained-ish dependency. Which brings us to the honest part.

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:

  • You need user/segment targeting, percentage rollouts, or experiment assignment — buy a flag platform.
  • You need an audit trail, approval workflow, or RBAC on config changes — this requires wrapping the package in a service layer with your own logging and permissions; scope that explicitly, and if it's more than a sprint, reconsider.
  • Settings must be versioned, staged, or atomically published as a bundle (e.g., "activate pricing model v3"). This package is per-key, point-in-time.
  • The app must run with zero cache dependency (the cache is load-bearing for performance, though missing keys fall back gracefully). Multi-region deployments with independent caches will see drift after a write — understand your invalidation topology before shipping.
  • You're on Laravel 9 or below and can't move. Confirm 2.4.0 still permits 9.x; if it does not, you're pinned to an older tag with no upgrade path.
  • The team has no Laravel package fluency. This is not high, but it isn't zero — container binding, config publishing, and cache-clearing order are all learnable in an afternoon and all produce confusing failures when done wrong.

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.

How to Pitch It (Stakeholders)

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:

  • What it buys you: a DB-backed key/value store, cached reads with invalidation, type-aware serialization, a published config for table and cache store. Auto-discovery on 11, no manual provider registration.
  • What it doesn't: no validation, no permissions, no audit, no encryption, no tenancy, no versioned releases. Those are ours to build.
  • What we're asking for: constructor-inject a contract and bind it in our own provider rather than sprinkling the facade — it keeps the dependency swappable and testable. Wrap writes in a single service that validates, authorizes, and logs. Cache-clear order matters (config:clear before cache:clear) and stale merged config is the classic false failure.
  • The ask on validation: one Laravel 11 CI job that actually boots the app and exercises a read and a write. Not a constraint-widening check — a real boot. If that job doesn't exist, we build it before we adopt.
  • The framing on risk: 7 stars, single maintainer, last release March 2024. We're choosing this knowingly because the surface area is tiny and the escape hatch is cheap. Name the owner of the escape hatch.

Objection handling.

  • "Is this abandoned?" No evidence it is; no evidence it isn't. The code is small and MIT — the worst case is we vendor it. That's the whole risk story, and it's a two-day risk, not a two-quarter risk.
  • "Why not just use env vars?" Env vars require a deploy to change and couples config to infrastructure. That's precisely the friction we're removing.
  • "Why not LaunchDarkly?" Because we don't need targeting or experiments yet, and we're not paying a per-seat platform fee to edit a rate limit. When targeting shows up on the roadmap, we revisit.
  • "Who can change production values?" That's a question we answer in the design, not one the package answers for us — and it's the right question to be asking.
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