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

Menu Bundle Laravel Package

kunstmaan/menu-bundle

A menu bundle for Kunstmaan CMS that provides flexible, tree-based navigation menus you can configure and render in your templates. It lets developers define menu structures and integrate them into pages for consistent site navigation.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor, and materially mis-scoped. Despite the request framing this as a "Laravel/PHP package," kunstmaan/menu-bundle is a Symfony bundle, not a framework-agnostic PHP library. It is a fragment of the KunstmaanBundlesCMS suite and expects a Symfony kernel, Symfony DI container, Symfony routing/YAML config, Doctrine ORM, knplabs/knp-menu-bundle, and — critically — its sibling kunstmaan/admin-bundle and kunstmaan/node-bundle. The admin UI, security roles, form types, and translation entities it depends on live in those siblings. It cannot be consumed as a self-contained package.

Integration feasibility — not feasible in a Laravel application. Laravel has no mechanism to register a Symfony Bundle class; Illuminate\Foundation does not boot a Symfony kernel with bundles, and Kunstmaan's admin surface is not a portable UI. A Laravel service provider wrapper is not a thin shim here — it would require standing up a second container, Doctrine, the Gedmo/DoctrineExtensions tree layer, and the Kunstmaan admin asset pipeline (Bootstrap-3-era front-end). Realistic effort to make this boot outside Kunstmaan CMS: weeks to months with high probability of failure, and even on success you inherit the CMS's operational surface. A two-day timeboxed spike is the only responsible commitment before a "no."

Technical risk — high.

  • Abandonment: 3 stars, 0 dependents. No community, no downstream users to surface regressions, no credible path to a security advisory or CVE response. The Kunstmaan bundle family has been effectively sunset; version constraints target older Symfony/PHP lines and will fight PHP 8.2+.
  • Coupling: transitive dependency on the CMS core means adoption is all-or-nothing, not incremental.
  • No abstraction boundary: menu entities extend Kunstmaan node/translation base classes; swapping the persistence layer later is not a refactor, it's a rewrite.
  • Licensing is fine (MIT) — the risk is entirely technical and lifecycle, not legal.

Key questions to resolve before any decision.

  1. Is the target application actually Laravel, or is this a mislabeled Symfony/Kunstmaan estate? If Symfony, the calculus changes but the abandonment risk does not.
  2. Is the requirement "multiple administrable menus with localized items" — a feature — rather than a dependency need? A feature should be built, not imported.
  3. Do we require i18n menus, page-entity linking, and drag-and-drop ordering? (These are the only genuinely non-trivial parts, and they are ~2 tables plus an admin resource.)
  4. Is there an existing Kunstmaan CMS deployment we must stay compatible with, and what is its exit timeline?
  5. Who is the named internal owner if we fork? No fork should be approved without one.

Integration Approach

Stack fit — recommend reject-and-build. The correct integration approach is to not integrate this bundle and instead implement the capability natively in Laravel:

  • menus and menu_items tables (adjacency list with parent_id + position, or nested set if you need subtree queries), plus a menu_item_translations table for localized labels/URLs.
  • An admin resource via the existing tooling (Filament/Nova/custom), with reorder, nesting, and a URL or polymorphic linkable target.
  • A Blade component plus a MenuResolver service and a cache layer keyed per menu+locale. This preserves the only valuable asset in the bundle — its data model and UX concepts — at a fraction of the lifecycle cost.

Migration path — none for Laravel; constrained for Symfony. There is no migration path from a Laravel codebase to this bundle. If a Symfony/Kunstmaan application already uses it, treat it as frozen: pin exact versions, add a composer.lock audit gate, and schedule replacement behind the same menu-resolver interface so the swap is invisible to templates. Do not extend it with new features.

Compatibility. Expect conflicts on PHP 8.2+ (deprecations promoted to errors in Kunstmaan's older code), Symfony major-version constraints incompatible with current symfony/* components Laravel already pulls in, and Doctrine versions that may not co-exist with other Doctrine-dependent packages. Verify any of this only inside a disposable spike branch — do not let it touch the main dependency graph.

Sequencing.

  1. Confirm framework/estate reality (day 1).
  2. Timeboxed spike: attempt standalone boot of the bundle in the target app, with an explicit kill criterion (day 2–3).
  3. Decision gate: adopt / fork / build. Default expectation is build.
  4. Design the menu data model and resolver interface (so rendering is decoupled from storage).
  5. Admin CRUD + ordering + translation UI.
  6. Blade/Twig rendering layer and cache invalidation hooks.
  7. Backfill/seed content; cut over behind the resolver interface; delete the spike.

Operational Impact

Maintenance — the burden transfers entirely in-house. With no upstream activity, every PHP/Symfony upgrade becomes a manual patch of vendored Kunstmaan code. Forking means owning a subtree of the CMS, not one bundle. Budget recurring maintenance every framework upgrade cycle; a native implementation reduces this to ordinary application code your team already knows.

Support — no external escalation path. Zero dependents means no Stack Overflow corpus, no issue responsiveness, no third-party integrators. All support is a single internal SME, and that SME is a bus-factor of one unless deliberately cross-trained. Document the model and the resolver contract as the primary mitigation.

Scaling. Read path is cheap and highly cacheable — menus are small, low-churn data. The real scaling concern is invalidation correctness: menu edits must bust the right cache keys per menu and per locale, or stale navigation ships to production. On the write/admin side, nested-set or tree reordering performs multi-row updates; concurrent editors reordering the same menu can corrupt ordering. Mitigate with a single-writer/optimistic-lock strategy and an admin-side transaction. Do not expect this bundle's ordering logic to handle concurrency gracefully.

Failure modes to monitor.

  • Tree corruption / orphaned parent_id after partial deletes (no FK cascade guarantees).
  • Silent translation fallback gaps producing empty or default-locale labels.
  • Stale cache after menu edits — the highest-frequency real-world incident.
  • Fatal errors on PHP minor upgrades from deprecated Kunstmaan code paths.
  • Admin UI asset breakage when the host app's front-end stack diverges from the bundle's pinned Bootstrap/JS. Add health checks for orphaned nodes and a cache-version stamp per menu.

Ramp-up. Conceptual ramp-up is short — the domain (multi-menu, localized items, ordering) is a two-day mental model. Codebase ramp-up is long and low-value: weeks spent learning Kunstmaan CMS internals that yield no transferable knowledge. For a native build, expect roughly 1–2 engineer-weeks for a production-quality menus feature including admin UI, i18n, caching, and tests — versus an open-ended and likely unsuccessful integration effort.

Recommendation: do not adopt. Treat kunstmaan/menu-bundle as a design reference only. Fund the native build; it is smaller, cheaper, and supportable.

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