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 Builder Api Bundle Laravel Package

forci/menu-builder-api-bundle

Symfony bundle that exposes API endpoints for the Forci Menu Builder, enabling programmatic creation, retrieval, update, and deletion of menus and menu items. Add a ready-made menu management API layer to your application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — framework mismatch is the headline. Despite being scoped in a Laravel/PHP package review, forci/menu-builder-api-bundle is a Symfony bundle (the -bundle suffix is Symfony's extension mechanism: a Bundle subclass registered via config/bundles.php, plus a DI Extension). Laravel has no bundle system; it boots through service providers and its own container. There is no evidence of a Laravel service provider, facade, or config stub. The useful asset is the data model and JSON API contract for hierarchical menus (items, nesting, ordering, visibility) — the Symfony wiring is incidental. A TPM should frame this as a reference implementation to harvest, not a dependency to install.

Integration feasibility — low as-is, moderate with extraction. Three paths, descending in effort-to-value:

  1. Standalone Symfony service — run the bundle natively in a container, expose the menu API, consume it from Laravel over HTTP. Preserves the package as designed; adds a second runtime, a network hop, and an auth seam.
  2. Core-library extraction — if Forci publishes a framework-agnostic forci/menu-builder core (likely, given the -api-bundle split), depend on that and rebuild routes/controllers/persistence in Laravel. Cleanest long-term path.
  3. Reimplementation — a Laravel-native menu builder (adjacency list or nested set + REST/JSON:API). For this profile, likely the cheapest total option.

Technical risk — high and compounding. Four independent factors stack: zero stars, zero dependents (no production validation, no community regression safety net); NOASSERTION license (unclassified, could be non-permissive — a legal hard-stop until counsel reviews LICENSE/composer.json; do not assume MIT); single-vendor origin ("forci") with no visible cadence, CI, or test suite implied; and framework mismatch, which makes every integration bug ours to diagnose against unfamiliar Symfony internals.

Key questions to answer before any engineering spend:

  • What is the exact license text, and does it permit commercial use, modification, and redistribution?
  • Is there a framework-agnostic core package, or is domain logic welded to Symfony/Doctrine/API Platform?
  • Which Symfony and PHP versions are supported, and is the repo actively committed to?
  • What is the persistence contract — Doctrine entities, migrations, or raw SQL? Can it target an existing schema?
  • Does the API contract cover auth, multi-tenancy, and localization, or is it single-tenant and English-only?
  • Who maintains it, and is there a security disclosure channel?

Integration Approach

Stack fit — mismatch by design. Expect required dependencies on symfony/framework-bundle, likely doctrine/orm, possibly api-platform/core and symfony/serializer. Laravel ships Eloquent and its own HTTP kernel; Doctrine and API Platform are not native. Composer may resolve the graph, but the bundle will never register. Budget for an adapter layer or a separate service — never a one-line composer require.

Migration path — discovery first, decision second, build third:

  1. License and provenance review (legal, 1–2 days) — hard gate; stop here if terms are unclear.
  2. Feasibility spike (1 engineer, ~1 week) — stand the bundle up in a throwaway Symfony app to capture the API contract, data model, and migration SQL. Produces reusable artifacts regardless of outcome.
  3. Decision point — extract core vs. containerize as a service vs. reimplement. Decide on spike output, not the README.
  4. Build — adapter/service plus contract tests against a captured OpenAPI/JSON schema.

Compatibility. Treat PHP and Symfony version constraints as hard inputs; a pinned older Symfony minor becomes a ceiling in the standalone-service path. PSR-7/PSR-15 compliance would ease Laravel-side consumption; absent it, write a client wrapper. Schema ownership is the sleeper issue — Doctrine migrations do not map cleanly onto Laravel's migration runner; assign ownership explicitly (service owns its tables, Laravel does not migrate them).

Sequencing — start with the seam, not the feature. Confirm API contract, auth model, and schema first, then build one vertical slice end to end (list menus → render in Laravel). Expand only after the seam is proven. Scope an in-house fallback in parallel so schedule does not hinge on the spike.

Operational Impact

Maintenance — adoption means becoming the maintainer. With zero dependents and a single vendor, there is no upstream safety net. Patching, security response, and PHP-version upgrades become internal obligations. This is not a "set and forget" dependency; budget ongoing ownership.

Support. No community forum, no visible issue triage, no SLA. Escalation is the vendor directly or the source code. For a Laravel team, internal Symfony fluency is the support contract — confirm it exists before committing.

Scaling. The API surface is presumably stateless and horizontally scalable, but the bottleneck is the datastore behind the menu hierarchy — recursive queries on nested sets or adjacency lists degrade with depth and breadth. Query patterns are unknown, so the scaling profile is unknown; benchmark the menu-read path early, since it is likely the hot path on every page render.

Failure modes to design against:

  • Boot failure / integration rot — bundle silently breaking on a PHP or Symfony upgrade inside a standalone service.
  • License contamination — discovering non-permissive terms after code is in production.
  • Abandonment — repo archived or vendor pivots; no upstream security patches.
  • Schema divergence — Doctrine-owned tables drifting from Laravel expectations, or double-migration.
  • Security exposure — unmaintained REST surface accepting unauthenticated/unvalidated input; treat as an untrusted boundary and put auth at the edge.
  • API contract drift — no versioned spec means Laravel clients break silently.

Ramp-up. Two costs: Symfony fluency for whoever runs the service, and domain-model onboarding for whoever consumes it. Estimate 1–2 weeks for a mid-level engineer to be productive in the standalone-service path; longer if extraction is chosen and Doctrine patterns must be translated to Eloquent. Zero adoption means no tutorials, no Stack Overflow answers, no community examples — onboarding is source-reading only.

TPM recommendation. Do not treat this as a Laravel dependency — it is not one. Fund a one-week spike gated on license clearance; the most probable outcome is to harvest the data model and API contract and build a small Laravel-native equivalent, unless the vendor confirms an actively maintained, permissively licensed, framework-agnostic core. At 0 stars, 0 dependents, and an undetermined license, the default answer is "reference, not dependency." Record the decision as triage — spike, fork under legal review, or deprioritize — not as a build commitment.

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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle