anomaly/addons-module
Addon management module for the Anomaly CMS built on Laravel. Browse, install, enable, disable, and organize modules, plugins, and themes from the admin panel, with support for addon discovery and lifecycle operations.
What this actually is. anomaly/addons-module is not a standalone Laravel package. It is a first-party module for the Streams Platform (the CMS foundation behind PyroCMS), and its purpose is administrative: enumerating installed addons, reading their metadata manifests, and exposing addon state (installed/enabled/version) to the control panel and console. That framing drives every other conclusion below — the unit of adoption is the platform, not this module.
Architecture fit. The module follows the platform's module contract (service provider, routes, migrations, control-panel views, and addon-manifest conventions). It is tightly coupled to Streams' addon discovery and entry abstractions. It will not drop into a generic Laravel application, and it has no meaning outside a Streams-based install. If your target is a PyroCMS deployment already on a compatible platform version, fit is effectively "native." If your target is anything else, fit is zero — you would be adopting a CMS to get a package manager UI.
Integration feasibility. Feasible only along one path: a Streams/PyroCMS install pinned to the era the module targets. Given the April 2020 last release, expect PHP 7.x and Laravel 5.8–7.x era constraints; modern Laravel 10/11 support should be assumed absent until proven otherwise. Verify by reading the module's composer.json constraints against the parent platform's version, not by reading the README. The dependency chain is the deliverable — resolve it in a throwaway container before committing to anything.
Technical risk. The dominant risk is not code quality; it is abandonment and blast radius.
opportunity score of 27.25 and composite 0.61 are directionally consistent with a low-activity, low-adoption artifact. Treat the scores as corroboration, not evidence.Key questions to answer before any decision.
Stack fit. Laravel + Streams Platform only. There is no adapter story, no framework-agnostic core, no headless mode. The module presumes the platform's routing, view layer, and addon manifest format. Confirm this before scoping: if the stakeholder asking for "addon management" is not already committed to PyroCMS, the correct recommendation is to decline the module and solve the underlying need (plugin registry, extension catalog, feature-flagging) with a purpose-built component.
Migration path. Two distinct scenarios with opposite answers.
composer.lock, vendor it, and treat that lockfile as the contract.Compatibility. Assume the following until disproven in a container: PHP 7.2–7.4, Laravel 6/7 era, platform version contemporaneous with the 2020 release. Check whether the platform pins a maximum Laravel version — if it does, the migration ceiling is set by the platform, not by your application roadmap. Also check whether the module ships its own migrations that collide with platform migrations on re-run.
Sequencing.
composer.json patch constraint so the fork is explicit in the lockfile.Maintenance. Assume permanent fork ownership. There is no realistic expectation of upstream fixes. Assign a named owner, budget a recurring review slot tied to PHP minor releases, and track PHP EOL dates as hard deadlines rather than backlog items. Realistically this is low-hours-per-year work on a small codebase — the cost is the obligation, not the effort.
Support. Community support is thin to nonexistent; GitHub issues on a 2-star repository should be assumed unread. Internal documentation is the support model. Budget for one engineer who understands the Streams addon model to be reachable, and write down the manifest format and discovery rules while that knowledge is fresh.
Scaling. Not a meaningful concern. This is an administrative surface — addon enumeration and metadata reads — with negligible request volume and no hot path. Scaling risk lives entirely in the parent platform (caching, entry storage, session handling) and should be assessed there, not here.
Failure modes.
Ramp-up. Deceptively steep for the size. The code itself is small, but productive work requires fluency in the Streams Platform's module lifecycle, addon manifest schema, and entry/field-type abstractions — niche knowledge with limited external reference material. Estimate days for a Laravel-fluent engineer to read the module, and one to two weeks before they can safely modify it. That ratio — high platform-knowledge overhead against low module value — is the single strongest argument for reimplementation over adoption.
Bottom line. Technically coherent, operationally orphaned. Approve only in the narrow case where the platform is already a committed dependency and addon management is a required feature; in that case, fork on day one and budget the ownership. In every other case, decline the module and either build the small registry yourself or treat the platform decision as the real decision it is.
How can I help you explore Laravel packages today?