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

Content Browser Ui Laravel Package

netgen/content-browser-ui

A reusable front-end for Netgen Content Browser that gives PHP applications a configurable content-browsing and selection interface. Browse, search, and pick content items through a clean UI designed to plug into existing Netgen Content Browser backends. Ideal for admin tools and content pickers.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing to correct in any planning conversation is the label. netgen/content-browser-ui is described as a Laravel/PHP package, but the evidence points elsewhere: it is the presentation layer for Netgen Content Browser, which is native to the Netgen Layouts / Ibexa / eZ Platform ecosystem (Symfony-based CMS). The PM and TPM assessments both land on the same conclusion — it ships Twig templates and/or a JavaScript bundle that expects the netgen/content-browser core's routes, view models, and asset pipeline. There is no Laravel service provider, no Blade views, no Eloquent integration, and no published asset pipeline for non-Symfony hosts. Architecture fit against a conventional Laravel application is near-zero as a direct dependency. It is only plausible as a satellite: a separate runtime serving a browse/select UI that our Laravel admin consumes over HTTP or an iframe.

Integration feasibility. Low, and the cost is asymmetric depending on which half of the package you actually need. Three preconditions must hold before the UI does anything: (1) netgen/content-browser core is installed and configured with at least one content source, (2) those sources resolve through eZ/Ibexa content APIs, and (3) the host serves the UI's routes and assets under expected paths. A Laravel app satisfies none of these out of the box. The two realistic paths are: run the browser as an isolated Symfony/Ibexa service behind an iframe or proxied API, or lift the front-end assets and reimplement the backend contract in Laravel. The second path is materially cheaper if the UI is genuinely a standalone JS bundle with a clean adapter seam — that is the single unknown that most changes the estimate, and it is resolvable in a one-day spike by reading package.json, src/ entry points, and any example/ folder.

Technical risk. High for our context, moderate in the abstract. The adoption signals are unambiguous: 14 stars, 0 dependents, composite score 0.1, single-vendor maintenance (Netgen). There is no dependents ecosystem from which to infer battle-testing and no community signal to lean on when something drifts. Version coupling to the core package is likely tight, so a minor bump in content-browser can break the UI — the most probable breakage presenting as missing assets or blank views. The MIT license removes legal risk but not engineering risk. The dominant risk is not that it breaks; it is that it silently does not apply to us at all, and we spend a quarter discovering that.

Key questions.

  • What does the package actually contain — Twig templates, a compiled JS bundle, or both? Is there a headless/JSON mode with a documented adapter seam we could consume from Blade/Livewire?
  • Which versions of netgen/content-browser and Ibexa/eZ does it pin, and how wide is that support matrix?
  • Is the rendering contract documented well enough to reimplement the backend in Laravel, or is it coupled to internal view models?
  • Is Netgen offering commercial support for the browser stack, and does that agreement cover this UI package?
  • Has there been a release in the last 12 months, and who are the committers?
  • What is the peer dependency contract (React? bundler? build tool), and does it collide with our existing frontend stack?

Integration Approach

Stack fit. Poor as a direct dependency; plausible only as a satellite or as harvested front-end assets. The package assumes a Symfony kernel, Twig, and the Ibexa content API — a Laravel host has none of those. Two viable shapes:

  1. Service-behind-iframe/proxy. Deploy a small Symfony/Ibexa-backed instance with content-browser + content-browser-ui and one content source. Expose browse/select endpoints and embed in the Laravel admin. Preserves the package's assumptions and keeps eZ dependencies out of our app. Highest fidelity, highest operational cost.
  2. JS island against a Laravel adapter. Compile the UI into its own bundle, mount it on a DOM node from a Blade view, and implement the handful of JSON endpoints it expects in Laravel. Far cheaper to operate — but only works if the UI's backend contract is thin and documented. Verify this before committing; it is the assumption most likely to be wrong.

Migration path. If we proceed, sequence it as: (1) stand up an isolated environment with core + UI and one content source, or run the JS-bundle spike if pursuing option 2; (2) confirm the UI works end-to-end there; (3) define the integration contract explicitly — URL params, callback payload, or postMessage shape, and store identifiers not whole payloads; (4) embed in Laravel behind an internal interface; (5) only then consider extracting assets further. Do not attempt a Blade port or a partial vendor into app/ — coupling to the core's view models makes that a rewrite, not an integration.

Compatibility. Verify PHP and Symfony constraints against the satellite host, not our Laravel runtime. Check the Ibexa/eZ version the core targets, since that dictates which CMS we would have to run alongside. Asset publishing assumes Symfony's assets:install / Webpack Encore conventions; plan for that in the satellite. On the JS path, pin a commit SHA rather than a branch — there is no semver safety net — and check whether peer dependencies (likely React plus a specific bundler) can be isolated in a separate entrypoint rather than mixed into our Alpine/Livewire/Vue bundle.

Sequencing. Treat this as a timeboxed evaluation spike, not a committed workstream. The go/no-go decision should hinge on two things: whether the adapter seam exists and is thin (engineering), and whether the iframe/proxy or vendored-bundle pattern is acceptable to product and security (governance). Budget roughly one to two weeks for the spike. Do not let it become a background migration.

Operational Impact

Maintenance. The burden depends entirely on which shape we pick. Option 1 means owning a second runtime — Symfony + Ibexa — purely to serve a content picker, and inheriting upgrades to the browser core, the UI, the CMS, and PHP/Symfony. That is disproportionate for a UI component. Option 2 means owning a vendored JS bundle and a thin Laravel adapter, which is tractable but still requires an internal owner who can read the upstream source. Either way, with 0 dependents there is no community signal when something drifts: plan to pin and upgrade manually rather than trusting semver.

Support. Community-only unless a Netgen commercial agreement is in place. With 14 stars, expect thin issue traffic and slow responses; internal expertise will be the real support channel. If adopted, name an owner on our side and keep the integration behind an interface so it can be replaced without a rewrite. Assume upstream maintenance is not guaranteed.

Scaling. The UI layer itself is cheap — static assets plus a browse API. Real scaling concerns live in the content repository behind it, which we inherit from Ibexa regardless of this package. The iframe/proxy pattern adds a network hop and a session/cookie boundary; size for that if browse volume is high, and account for CSP configuration. Browse latency, not throughput, is the likelier product-visible complaint.

Failure modes. Ranked by probability: (1) version skew between content-browser-ui and the content-browser core, presenting as missing assets or blank views; (2) route or asset-path mismatches in a proxied deployment; (3) iframe auth/session and CSP failures, plus postMessage contract drift as either side evolves; (4) the quiet failure — the package is abandoned upstream and we are left maintaining a fork of a UI we barely use; (5) schema drift in the adapter if we reimplement the backend contract ourselves.

Ramp-up. Non-trivial on the Symfony path. Any engineer touching this needs Symfony, Twig, and Ibexa content-model familiarity — a different skill set from a Laravel team. Plan for a learning curve measured in weeks, not days. The Laravel-adapter path is gentler: an engineer comfortable with a JS bundler and HTTP contracts can be productive in days, provided the adapter seam is real.

Recommendation. Do not adopt as a critical-path dependency for a conventional Laravel stack. The 0.1 score reflects reality: this is the UI half of an Ibexa-ecosystem tool with negligible adoption and no Laravel surface. Two legitimate reasons to proceed: (a) we already run Ibexa or Netgen Layouts, in which case this is a reasonable add-on to the core browser and the operational math changes entirely; or (b) a one-week spike proves the JS bundle has a clean adapter seam, making option 2 a cheap tactical accelerator for an internal admin workflow. Otherwise, budget a lightweight native picker in Blade/Livewire against our own API — it will be cheaper to build and far cheaper to operate than standing up a second CMS runtime. Frame this to stakeholders as a scoped evaluation, not a platform 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.
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
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager