larapack/config-writer
Larapack Config Writer lets Laravel apps persist configuration changes at runtime, updating, adding, or removing config keys in files. Useful for editable settings in admin panels without manual file edits.
Build vs. buy for "editable settings." This package anchors the cheap end of the option space: the functionality is a small wrapper around reading a PHP config array, mutating it via dot-notation, and writing it back with var_export. Any vendor evaluation, procurement conversation, or "should we build a settings service?" debate should be measured against that baseline. A senior engineer can reproduce this in roughly half a day; the buy decision therefore rests entirely on maintenance, not capability.
Where settings live: file vs. database. The core product decision this package forces is whether user-editable configuration belongs in config/*.php at all. Files imply single source of truth per host, deploy-coupled state, and no audit trail. A database-backed settings table implies tenant scoping, per-row permissions, change history, and safe multi-node rollout. The package makes the file path trivially easy, which is precisely why teams drift into it and later pay a migration tax. Use it as the concrete artifact in that architecture conversation rather than as an implementation choice.
Feature scoping for admin/settings screens. If a story reads "an admin can change application options without a deploy," this package defines the minimum viable version of that story — and reveals what is not included: no validation layer, no typed values, no permission model, no rollback, no audit log. That gap list is the actual scope of the epic. Surface it before estimation, not after.
Installer and first-run wizard flows. This is the one genuinely defensible use case. Writing APP_KEY, database credentials, or mail transport settings during an install wizard happens before a working database connection exists — a niche no DB-backed settings package can serve. If your roadmap includes a self-hosted installer or a CLI setup command, this is the pattern to reach for.
Roadmap signal on market direction. A 2016 last release with an archived repository is a leading indicator that the ecosystem solved this problem differently (database-backed settings, environment variables, secret managers, feature-flag services). Treat it as evidence for planning, not as a candidate dependency.
Maintenance liability accounting. Adopting archived code means the fork is yours. Whether to budget that is a product call about how long the feature must live — a two-quarter internal tool is fine; a five-year customer-facing surface is not.
Consider it only when all of the following hold:
config/ directory. No containers with immutable filesystems, no read-only mounts, no horizontal autoscaling.php artisan config:cache is not part of the deploy pipeline. Cached config bypasses the runtime merge entirely, so the package's writes silently stop taking effect — a failure mode that looks like a bug for weeks.Look elsewhere — specifically, do not adopt — when any of these are true:
spatie/laravel-settings or similar DB-backed packages cover the admin-panel use case with validation, typing, and migrations included. The only reason to prefer this package is the pre-database installer scenario.For executives — one line: Not recommended for adoption. It is archived, last released in 2016, and the underlying capability is small enough to build internally in under a day if we ever genuinely need it.
The argument in three points:
It solves a problem we should not solve this way. Persisting settings by rewriting PHP configuration files works on one server and breaks on many. Our infrastructure direction is containers and horizontal scaling; this pattern is directly opposed to that, so adopting it today means funding a migration later.
The capability is not worth buying. The package is a thin convenience wrapper — dot-notation config edits and a structured file write. If a specific workflow needs it, engineering can implement and own it with better error handling and validation than the archived original.
The maintenance cost is asymmetric. Zero cost while nothing goes wrong; total cost the moment it does, because there is no upstream, no security patching, and no compatibility work for future Laravel or PHP releases. That risk is small in probability but lands during framework upgrades, which are exactly when teams have the least slack.
What we recommend instead: for admin-editable application settings, use a database-backed settings store with typed values, validation, and a change log. For the narrower installer/first-run scenario — where no database exists yet — a small internal helper is the right-sized answer.
For engineering: the realistic effort to write an equivalent is half a day plus tests. The realistic effort to adopt this package includes verifying it against our Laravel and PHP versions (likely a blocker), standing up a fork and a composer.json VCS entry or path repository, and documenting the config-cache caveat for operators. The build path is cheaper and leaves us owning something current.
Decision requested: do not add this dependency. If a settings-editing requirement appears on the roadmap, route it to a database-backed solution and, if the installer flow is in scope, to a small internal implementation scoped to that flow alone.
How can I help you explore Laravel packages today?