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

Neo4J Bundle Laravel Package

neo4j/neo4j-bundle

A Symfony bundle that integrates Neo4j graph databases into PHP applications. It configures the Neo4j client, wires services for dependency injection, and provides convenient access to graph database queries and transactions from Symfony projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The headline mismatch stands: this is a Symfony bundle, not a Laravel package, and release 1.2.0 widens rather than narrows that gap. The release extends stopwatch timing, logging, and event-bus dispatch from the driver layer down into sessions and transactions — all of which are Symfony kernel/debug-stack constructs (Stopwatch, LoggerInterface autowiring, EventDispatcherInterface). Roughly 70–75% of the bundle's value is now Symfony-specific; on a Laravel codebase none of it applies, and you would use the underlying laudis/neo4j-php-client directly behind a custom service provider. The bundle remains a fit only if the target stack includes Symfony.

Integration feasibility. Unchanged. The real dependency is laudis/neo4j-php-client, which is mature enough for production: Bolt and HTTP transports, session/transaction handling, lazy connections, result formatting, and typed exceptions. 1.2.0 does not alter that client contract — it wires existing client session/transaction objects into Symfony's observability stack, so there is no new API surface a Laravel integrator would call. Laravel wiring remains a ~1-day task (singleton binding, config file, facade, repository wrapper).

Technical risk.

  • Bus factor 1. Both client and bundle are effectively single-maintainer (Ghislain). 82 stars and 0 tracked dependents understate real usage but do not reassure procurement.
  • Symfony-first roadmap signal. 1.2.0 is pure observability investment aimed at Symfony users. That is a reasonable prioritization for the maintainer, but it is evidence that Laravel-side ergonomics and debugging will not arrive from upstream. Plan on owning them.
  • Version drift. Bundle targets Symfony 6.4/7 and PHP 8.1+. 1.2.0 is a semver-minor, instrumentation-only release with no breaking changes and no config migration — low upgrade risk, but it also does not move the four-way compatibility matrix (PHP / Symfony / client / Neo4j Bolt). Cypher dialect differences between Neo4j 4.4 and 5.x remain a real pinning concern.
  • Profiler/debug surface is Symfony-only — and 1.2.0 makes this more visible, not less. Symfony consumers now get session- and transaction-level timing; Laravel consumers get nothing and must build equivalent tracing themselves. This is the operational gap to budget for.
  • No framework-level test utilities; you own the Neo4j test harness (Testcontainers or a shared Aura instance).

Key questions.

  1. Is a graph database actually justified, or is this a relational/JSON-column problem wearing a graph costume?
  2. Which Neo4j edition and version — Community, Enterprise, or Aura — and does routing/causal clustering matter?
  3. Do we have any Symfony footprint today, or is this purely hypothetical?
  4. Who owns Cypher modeling and query performance review, and who owns the query-tracing instrumentation we must build because the bundle's does not reach Laravel?
  5. Is a single-maintainer MIT dependency acceptable under our OSS policy, or do we need a fork-and-vendor plan — and has the 1.2.0 Symfony-first direction changed that calculus?

Integration Approach

Stack fit. For a Laravel shop, do not adopt the bundle — 1.2.0 adds nothing usable to you. Adopt laudis/neo4j-php-client and build a thin Laravel integration: config/neo4j.php, a Neo4jServiceProvider registering a singleton Client, and a Neo4j facade for ergonomics. If a Symfony service is in scope, use the bundle there and keep the client version aligned across both.

Migration path.

  1. Composer-add the client (not the bundle) in Laravel; pin exact versions.
  2. Create a Graph domain boundary — repository interfaces in the app layer, client usage confined to infrastructure. Never inject ClientInterface into controllers or jobs.
  3. Port config semantics from the bundle's documented options (connections, driver settings) so a future Symfony adoption is a lift-and-shift rather than a rewrite.
  4. Backfill with a read-only POC against a non-production Neo4j instance before any write path.

Compatibility. The four-way matrix (PHP 8.1–8.3, Laravel 10/11, client major version, Neo4j server Bolt version) is unchanged by 1.2.0 — it touches Symfony instrumentation only and introduces no new config keys or deprecations. If a Symfony service does use the bundle, ^1.2 is a safe minor upgrade requiring no code changes. Lock the client minor version; it does not follow Symfony/Laravel release cadences.

Sequencing.

  • Week 1: POC — connect, run a parameterized Cypher read, return mapped DTOs.
  • Week 2: repository layer, config, health check endpoint, CI with an ephemeral Neo4j container. Add query timing and structured logging here — 1.2.0 confirms upstream will not provide it for Laravel, so treat tracing as in-scope, not deferred.
  • Week 3: one bounded production use case (e.g., recommendations or lineage), with fallback behavior defined.
  • Defer any second use case until the first has run a full quarter.

Operational Impact

Maintenance. Low but thin. 1.2.0 is a healthy cadence signal, but a narrow-scope instrumentation release also confirms the maintainer's attention is on Symfony ergonomics. Expect slow turnaround on issues and no vendor SLA. Budget for a fork-or-patch contingency; keep the integration surface small enough that forking the client is survivable.

Support. Community-only. Escalation path is the maintainer's GitHub. For anything customer-facing you need an internal owner who can read the client source. With 1.2.0, that owner must also own the observability story, since upstream debugging features will not reach a Laravel deployment.

Scaling. PHP-FPM means per-request connection setup against Bolt — measure connection overhead before assuming it is free, and prefer the HTTP driver for async/batch workloads. Neo4j scales differently from MySQL/Postgres; query cost is a modeling problem, not an infra problem. The session/transaction timing introduced in 1.2.0 is the kind of data you would want when tuning this — but it is Symfony-only, so plan to capture equivalent timing in your own middleware. Plan for read replicas or Aura tiering only once query patterns are known.

Failure modes.

  • Neo4j unavailable → every request touching the graph fails; wrap calls in a circuit breaker with a defined degraded path.
  • Transient deadlocks (Neo4jTransientException) → implement retry-with-backoff at the repository layer, not scattered in callers.
  • Long-running Cypher → enforce server-side query timeouts and log slow queries yourself. 1.2.0 does not close this gap outside Symfony.
  • Connection pool exhaustion under load → cap pool size and monitor.
  • Silent observability drift → if a Symfony service and the Laravel app share a Neo4j instance, the Symfony side will have richer traces. Agree on a common baseline (query text, duration, correlation ID) so incident triage does not split along framework lines.

Ramp-up. The package is the easy part; Cypher and graph data modeling are the real cost — realistically 3–6 weeks before a mid-level PHP developer writes non-trivial, performant Cypher unsupervised. Add roughly 2–3 days for hand-rolled query tracing that Symfony users get from 1.2.0 for free. Budget for a modeling review before the first production schema, because graph schema mistakes are expensive to unwind. Total readiness: ~1 week for plumbing, ~1 month for a trustworthy first use case.

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.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel