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

Configuration Module Laravel Package

anomaly/configuration-module

Configuration module for the Anomaly CMS lets you manage application settings from the admin panel using database-backed, typed configuration fields with caching and a simple API for reading and writing values at runtime. Ships with migrations and an admin UI.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. anomaly/configuration-module is a Laravel package in the classic service-provider mold: it registers a configuration repository in the container so application settings can be read from and written to a persistence layer (database) rather than static config/*.php files. Conceptually this is the "runtime-editable settings" pattern — admin UI writes a value, the app reads it without a deploy. That pattern is a legitimate fit for any Laravel product with a settings screen.

The caveat is that this is not a general-purpose library. It is a module extracted from the PyroCMS platform (Anomaly Labs is the PyroCMS vendor), and modules in that ecosystem typically assume the platform kernel: the module manifest/registration system, and in most cases anomaly/streams-platform for its data layer. The real dependency surface is the CMS, not Laravel. Treat it as platform source code you can read, not a package you can install.

Integration feasibility. Low as a direct dependency. Zero stars and zero dependents mean no external validation and no known consumers outside PyroCMS itself. Dropping it into a vanilla Laravel application would require either pulling in the platform or stubbing its contracts — work that exceeds the cost of writing the equivalent repository from scratch.

Technical risk.

Risk Severity Note
Vendor abandonment High Single-vendor, no community, no downstream dependents
Framework version drift High PyroCMS-era modules generally pin Laravel 5.x/6.x; Laravel 10/11 compatibility unlikely
Platform coupling Medium–High Probable dependency on streams/platform contracts
Secrets in the database Medium DB-backed config invites storing credentials in a dumpable, backup-visible table
Cache coherence Medium DB-backed config must be cached; invalidation across nodes is where these modules usually break
Config shadowing Medium A DB layer over config() creates two sources of truth with unclear precedence

Key questions.

  • Is this a standalone Laravel package or a PyroCMS module that merely looks like one? Check composer.json for anomaly/streams-platform and the platform kernel.
  • What Laravel and PHP version constraints are declared, and are they still installable?
  • Does it encrypt values at rest, and does it support per-tenant or per-environment scoping?
  • What is the read path — one query per key, one query per request, or a single cached payload?
  • Is there a maintained fork, or has the code been folded into the PyroCMS monorepo?
  • Who owns the MIT license stewardship if the vendor pivots?

Integration Approach

Stack fit. Only a clean fit if the target application is already PyroCMS 3.x. For a modern Laravel 10/11 application, assume "no" until the version constraints prove otherwise. The scoring signals here (score 0.3, opportunity 34.15) are consistent with a package that is technically interesting and operationally unattractive.

Migration path. Two viable paths, neither of which is "composer require":

  1. Pattern extraction. Read the repository interface and cache strategy, then implement a ~150–250 line equivalent in-house: a settings table (key, value, cast, group, encrypted flag), a repository bound to an interface, a cache decorator, and a Settings::get()/set() facade. This gives you the same capability with zero platform coupling and full ownership of the Laravel version matrix.
  2. Maintained alternative. Adopt an actively maintained settings package (e.g. spatie/laravel-settings) and keep the file-config layer as the source of defaults. This trades a small amount of control for a maintained upgrade path.

A third path — vendoring this module's source and patching it forward — is only defensible if you are already inside the PyroCMS ecosystem and cannot leave.

Compatibility. Verify before any spike: declared PHP/Laravel constraints, database driver assumptions (JSON column support, text vs longtext for values), whether the migration set is publishable, and whether the cache store contract assumes a specific driver. PyroCMS-era code often predates Laravel's newer cache and container signatures.

Sequencing.

  1. Spike (1–2 days). Install into a throwaway Laravel app; record every transitive dependency and failure. This answers the standalone-vs-module question definitively.
  2. Decide build vs. buy on the spike's evidence, weighted toward build given the zero-dependency baseline.
  3. Contract first. Define the settings repository interface and the precedence rule (file config = defaults, DB = overrides) before writing storage code.
  4. Persistence + cache. Table, repository, cache decorator, invalidation on write. Ship with tests for the stale-cache and cold-cache paths.
  5. Admin surface. Write path, validation, audit trail, and encryption for sensitive keys.
  6. Cut over feature by feature, keeping a file-config fallback flag so a settings-service failure degrades to static defaults rather than a broken app.

Operational Impact

Maintenance. You will own this code. There is no upstream release cadence to ride and no issue triage to benefit from. Every Laravel major upgrade becomes your patch. Budget it as internal code, not as a dependency — the distinction matters for how it is tracked and who is on the hook.

Support. Effectively zero. No dependents means no Stack Overflow corpus, no GitHub issue history worth reading, and documentation that exists only in the context of PyroCMS. Any engineer hitting a problem debugs it from source. Plan for a single named owner with context.

Scaling. Reads vastly outnumber writes, so the entire scaling story is the cache decorator: config must resolve from the cache store, not the database, on the hot path. Multi-node deployments require a shared cache and a reliable invalidation signal on write — this is the most common place DB-backed config modules accumulate bugs. Writes should be rare, admin-triggered, and auditable. If the module issues one query per key rather than one payload per request, expect it to be the first thing you rewrite.

Failure modes.

  • Boot-time dependency. If configuration resolves during service-provider registration and the database is unreachable, the application fails to boot rather than failing to serve a settings page. Mitigate with a file-config fallback and lazy resolution.
  • Stale cache. Writes that do not invalidate leave nodes serving divergent settings — hard to reproduce and hard to diagnose.
  • Recursion. A config repository that itself depends on configuration can deadlock or infinitely recurse during bootstrap.
  • Secret exposure. DB-backed settings land in backups, read replicas, and mysqldump output. Encrypt at rest or keep secrets out of this table entirely.
  • Ordering. Settings reads that occur before migrations run will fail on a fresh database.

Ramp-up. Low for a Laravel-comfortable team, because the underlying pattern is familiar and the extraction is small. The unfamiliarity is PyroCMS module conventions, which is a cost you only pay on the vendoring path — and it is a cost with no strategic return.

Recommendation. Do not adopt as a dependency. Extract the pattern or use a maintained alternative; keep the effort scoped to a small, owned settings layer. The priority implied by the scoring signals is appropriate — this is a reference implementation to read, not a component to build on.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core