ibexa/graphql
GraphQL server implementation for Ibexa DXP and Ibexa Open Source, providing a query API for content and platform data. Part of the Ibexa DXP package family.
Architecture fit — the headline risk is category mismatch. ibexa/graphql is not a Laravel package. It is a Symfony bundle that ships inside Ibexa DXP (formerly eZ Platform), and its own README states the prerequisite plainly: install Ibexa DXP first. The bundle's service providers, DI compiler passes, and schema factories are bound to the Ibexa kernel and content repository — content types, field types, SiteAccess, and the policy/permission layer. There is no service provider contract, no facade, no config stub that a Laravel app can consume. For a Laravel/PHP team the realistic interpretation is a service-boundary integration (Laravel front-end consuming a headless Ibexa GraphQL endpoint over HTTP) or a reference-architecture read (how a mature PHP CMS models its GraphQL schema and resolvers), not a composer require.
Integration feasibility. Two viable paths, one non-viable:
| Path | Effort | Verdict |
|---|---|---|
| A. Composer-install into an existing Laravel app | N/A | Not feasible — framework and kernel coupling |
| B. Stand up Ibexa Open Source as headless backend, consume GraphQL from Laravel | High (new platform, new ops surface) | Feasible, but is a CMS adoption decision disguised as a package decision |
| C. Mine the schema/resolver patterns for our own GraphQL layer (Lighthouse, webonyx) | Low | Feasible; the only "leveraging" available without adopting Ibexa |
Technical risk. Several compounding signals. The license is dual: Ibexa BUL 2.4 (requires a paid DXP subscription) or GPL-2.0. GitHub reports NOASSERTION, meaning automated compliance tooling will not classify it — that becomes a manual legal review, and if we take the GPL branch, copyleft obligations attach to anything we distribute that incorporates it. The package has 4 stars, 0 dependents, and zero standalone adoption, which tells us nobody consumes this outside the DXP distribution; there is no independent community, no third-party issue corpus, and no external contributor base to fall back on. Version cadence is locked to the Ibexa release train, so our upgrade calendar is the vendor's. The 2026-08-20 last-release date is worth verifying — it is either a forward-dated vendor artifact or a data quality issue in our source, and either way I would not cite it as a maturity signal.
Key questions for the decision review.
Stack fit. Assume Laravel 10/11 on PHP 8.2+ and Ibexa DXP on Symfony 6/7 with PHP 8.2+. There is PHP version overlap but no runtime overlap: two applications, two deploy pipelines, two caching layers. The only contract between them is HTTPS + JSON GraphQL. Do not plan for shared Composer vendor trees, shared sessions, or shared Eloquent/Doctrine entities — those are the failure patterns that make this class of integration expensive six months in.
Migration path. There isn't one from Laravel; this is additive infrastructure. Either we adopt Ibexa as a new system of record for content, or we do not adopt it at all. Frame it to stakeholders as a platform selection, not an integration task, or the estimate will be wrong by an order of magnitude.
Compatibility surface to pin explicitly. GraphQL schema snapshot committed to our repo and diffed in CI; authentication model (JWT or token, and how Laravel guards map to Ibexa policies); CORS and trusted-proxy config; HTTP cache and invalidation signaling across the boundary; query depth/complexity limits configured on the Ibexa side before we let the BFF generate arbitrary queries; PHP and DXP minor-version pinning so an unattended vendor patch cannot rearrange the schema under us.
Sequencing.
Maintenance. We inherit the vendor's release train on both sides of a version boundary. The GraphQL bundle's version is coupled to the DXP version, which is coupled to a Symfony version, which is coupled to a PHP version — a four-link chain where any link can force an upgrade window. Budget an annual upgrade cycle with a dedicated regression pass on the schema contract.
Support. Commercial support exists only with a paid Ibexa subscription. Under GPL-2.0 we are entirely self-supporting on a codebase with effectively no external community. Bus factor is the vendor. There is no Stack Overflow corpus for this package, no third-party blog coverage, and issues will not be triaged by an independent maintainer group.
Scaling. Two platforms to capacity-plan. The material risks are (a) resolver-level N+1 on the Ibexa side producing request amplification under load, (b) cross-boundary cache invalidation — editorial publish in Ibexa must invalidate Laravel-side caches, and getting this wrong produces stale content that looks like a data bug, and (c) GraphQL query cost: without depth and complexity limits enforced server-side, a single expensive client query can degrade the content repository for all consumers. None of this is documented in the README; all of it is our problem.
Failure modes to instrument for.
Ramp-up. The learning curve is Ibexa domain knowledge, not GraphQL: content types, field type constraints, SiteAccess resolution, and the policy model take weeks to become productive in, not days. A Laravel developer without Symfony DI experience will need additional ramp. Plan for two engineers partially allocated for a month before the first production query, and treat any estimate that assumes a one-week integration as unserious.
Recommendation for the review board. Do not approve this as a package integration — the framing is wrong and the risk signals (4 stars, 0 dependents, dual license with NOASSERTION, vendor-coupled release train) do not support it. Approve a 2–3 day spike and a parallel legal/licensing check, with an explicit kill criterion: if we cannot justify adopting Ibexa DXP as a platform, we close this and build our GraphQL layer in-house. The opportunity score of 60.86 reflects an interesting capability inside a product we are not buying; it is not a signal about the package's standalone value to us.
How can I help you explore Laravel packages today?