anomaly/navigation-module
A Laravel navigation module for creating and managing site menus in Anomaly-based applications. Provides database-backed menu trees, configurable links, item ordering, and admin-friendly controls for rendering flexible, editable navigation across your Laravel views.
Architecture fit. Despite being catalogued as a Laravel/PHP package, anomaly/navigation-module is a PyroCMS addon built on the Streams Platform, not a general-purpose Laravel package. It targets the PyroCMS 3.x application skeleton, registers itself through a module manifest (anomaly.module.navigation), and depends on Streams' config-driven schema, admin UI conventions, and asset pipeline. That means the realistic integration surface is "an existing PyroCMS install," not "any Laravel app." For a standard Laravel 10/11 service, this is not drop-in — it is at best a reference implementation of menu tree modeling and drag-and-drop reordering UX.
Integration feasibility. Composer installation is mechanically possible, but runtime wiring (service provider registration, migrations, view namespaces, admin route binding, asset publishing) requires the host platform to be present. Without it, the package will install but be inert or error on boot. The pragmatic path is to treat it as source material: lift the menus / menu_links-style data model, the nested-set or adjacency-list reordering logic, and the link-resolution rules, then reimplement natively.
Technical risk. High, and concentrated in provenance:
anomaly/navigation-module but the repository URL points at anomalylabs/forum-module. That is a metadata integrity problem: either the registry entry is wrong, the repo was renamed, or the package was split/recombined. Any of these complicates license verification, version pinning, and CVE triage.Key questions to resolve before committing:
composer.json declare for php, laravel/framework, and anomaly/streams-platform constraints?dev-master?Stack fit. Binary. Fits a PyroCMS 3.x codebase; does not fit anything else without porting. Score the fit as "greenfield-adjacent" only for teams already committed to the Streams Platform.
Migration path. Two viable routes:
laravel/navigation style package. The differentiated IP is the tree-reorder ergonomics and link resolution, not the module bootstrap.Compatibility. Do not assume compatibility. Establish the declared matrix from composer.json, then empirically validate against your target PHP/Laravel majors in a throwaway app. Assume failure on Laravel 9+ until demonstrated otherwise. Check whether the admin assets require Laravel Mix; if so, budget for a Vite migration on your fork.
Sequencing.
spatie/laravel-menu, Filament/Nova menu builders, or an in-house implementation). Given 0 dependents, the default should be "harvest."navigation-module vs. forum-module mismatch and confirm license before any code enters your tree.Maintenance. Effectively unowned upstream. Budget explicit internal ownership: a fork, a patch cadence, and a named maintainer. Code volume is likely modest, which makes the fork cheap — but it is coupled to a dead platform, which makes it a permanent liability rather than a one-time cost.
Support. No vendor, no SLA, no active issue triage. The effective support channel is "read the source." Any incident response is entirely internal.
Scaling. Navigation rendering itself is inexpensive, but naive implementations query the menu tree on every page render. Enforce a cache layer keyed by menu handle with invalidation on any item mutation. Watch for N+1 on nested item hydration and for admin-side reorder operations that rewrite the full tree in a single transaction.
Failure modes to pre-mortem:
Ramp-up. Steep for anyone without Streams experience — the config-driven schema is non-obvious and poorly documented at this point. Estimate 1–2 weeks for a senior Laravel engineer to evaluate, extract, and productionize the useful pieces, versus roughly half a day to install it inside a working PyroCMS app. Size the effort against the alternative of building native menus, which for a competent team is often 3–5 days — making "harvest the schema, rebuild the rest" the commercially sensible default unless you are already a PyroCMS shop.
How can I help you explore Laravel packages today?