anomaly/post_categories_block-extension
An Anomaly CMS extension that enhances the Post Categories block with added configuration and display options for Laravel-powered sites. Extend category-based post listings with flexible block controls.
Architecture fit. This is not a general-purpose Laravel package. It is a PyroCMS block extension — a plugin for the Anomaly Labs Streams Platform that registers a page-builder block rendering the category list from the companion anomaly/posts-module. Architecturally it is a thin presentation adapter: a BlockExtension class declaring form fields, a handler that resolves categories through the Posts module's repository/service layer, and a Blade view. There is no reusable domain logic, no abstraction layer, and no value outside a Streams Platform runtime. It is a candidate only if we are already operating PyroCMS; for any other Laravel application the correct decision is to reproduce the behavior (query categories, render a list) rather than integrate this repository.
Integration feasibility. Mechanically straightforward: a Composer require plus addon registration, provided the environment satisfies the transitive chain — anomaly/streams-platform (the real dependency), anomaly/posts-module, and their respective Laravel and Twig/Blade-era constraints. That chain, not this package, is the actual integration cost. Feasibility is therefore high in a PyroCMS context and effectively zero elsewhere.
Technical risk. High. The signals are unambiguous: zero stars, zero dependents, an empty score, and an upstream vendor (Anomaly Labs) whose PyroCMS/Streams development has been dormant for years. The practical risks are: (1) Laravel/PHP version ceiling — Streams Platform-era code targets PHP 7.x and Laravel 5.x/6.x, which will not run on a current Laravel 10/11 stack without a fork; (2) tight coupling to Posts module internals — repository method names, category model shape, and Streams field naming are private contracts that drift between minor releases; (3) no visible test suite, CI, or release cadence, so correctness is established only by manual verification; (4) supply-chain surface — an unmaintained transitive dependency set with no security patch path; (5) view and asset publishing collisions when multiple addons override the same namespaces.
Key questions. Which exact PyroCMS/Streams Platform version is in scope, and does the Posts module at that version expose the category repository API this block calls? Is the category list expected to be hierarchical, paginated, or filtered — and does the block support that, or would we be extending a frozen codebase? Are the block's views publishable/overridable so we can change markup without forking PHP? What is the licensing and support posture, and are we prepared to own the fork permanently? Does the block tolerate an empty category set and a disabled Posts module, or does it throw on render?
Stack fit. Valid only for PyroCMS 3.x on the Streams Platform with the Posts module installed, pinned to the PHP/Laravel generation that platform supports. If the target application is a modern Laravel build, this package is a reference implementation at best: reimplement as a Blade or Livewire component backed by an Eloquent category query, or as a Filament widget if the admin is Filament-based. That rewrite is a day of work and eliminates the dependency entirely — which is almost always the better trade.
Migration path. If we are on PyroCMS and the category list is genuinely needed, adopt by fork, not by upstream require. Sequence: vendor the repository into our own namespace, add explicit Composer constraints, publish the views so presentation changes stay outside PHP, and add a smoke test that renders the block against a seeded category set. If we are migrating off PyroCMS, treat this as one of many blocks to be catalogued and replaced during the front-end rebuild — it should be inventoried alongside every other page-builder block, since block configuration lives in page JSON and will need a data migration.
Compatibility. Expect to verify three axes independently: PHP version, Laravel/Streams Platform version, and Posts module version. Treat the Laravel constraint as the binding one — it typically forces the entire host application's dependency resolution, so a conflict here is a blocker rather than a shim. Pin exact versions across the addon set; do not allow floating constraints on any Anomaly Labs package.
Sequencing. Stand up a sandbox with the exact target versions, install the block, verify render against seeded data, then fork and pin before any production exposure. Gate the block behind a feature flag or an internal-only page until the fork is tested, and schedule the fork ownership decision before rollout rather than after.
Maintenance. We become the maintainers on day one. There is no upstream release stream to consume, so every PHP or Laravel upgrade in the host application is a manual remediation of this block and its Anomaly Labs dependencies. Budget a small but permanent maintenance line, or eliminate the package.
Support. No vendor support path. Community support via historical PyroCMS forums and archived documentation is the ceiling. Escalation is internal. Document this explicitly so incident responders do not burn time searching for an upstream owner.
Scaling. Performance impact is negligible in isolation — one category query per block render. The real scaling concern is the host platform, not this block. Watch for repeated block instances on a page each issuing their own query (no shared per-request caching), and for category sets large enough that an unpaginated list becomes a rendering cost.
Failure modes. Missing or disabled Posts module causing a container resolution error; empty category set rendering an empty wrapper or throwing; schema drift in the Streams category fields breaking the field mapping silently; view namespace collisions with other addons; orphaned block configuration left in page JSON when the addon is removed, which can break page rendering until the JSON is cleaned; and Composer resolution failures during any host upgrade, which surface as deploy-time rather than runtime incidents.
Ramp-up. Low for a competent Laravel developer to use — the block is small and conventional. Moderate to own — the Streams Platform block-extension conventions (field declarations, handler lifecycle, view namespaces, asset publishing) are idiosyncratic and thinly documented, and the institutional knowledge required to safely fork is concentrated in a framework most teams no longer staff. Recommend a single named owner rather than a distributed on-call rotation.
How can I help you explore Laravel packages today?