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

Relay Point Bundle Laravel Package

keirontw/relay-point-bundle

A PHP bundle for adding relay point and pickup location support to your application. It provides configuration and service integration for shipping, checkout, and delivery workflows, making it easier to manage selectable parcel pickup points.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this actually is. Despite being requested as a Laravel/PHP package assessment, v1.0.0 is a pure Symfony bundle — no Laravel support is claimed, and the release notes explicitly position it as framework-agnostic with "no e-commerce framework required." That distinction is the single most important finding for a TPM: the package solves a real, expensive problem (relay-point / pickup-point selection across 12 carriers) but does not drop into a Laravel application.

Architecture fit. The design is clean and appropriately decomposed for a TPM's purposes: carrier logic sits behind RelayPointProviderInterface with auto-discovery, so adding or swapping carriers is a configuration-plus-class exercise rather than a fork. Geocoding is similarly pluggable (Addok, Nominatim, Google Maps, Photon, custom), which matters because geocoding is the cost and compliance hotspot in this domain. Critically, selection state is session-backed and deliberately decoupled from any Order/cart model — good for portability, but it means the package stops short of the thing most businesses actually need: reliably attaching a relay point to an order at checkout. That last mile is only partially covered by the optional generic checkout listener (checkout_listener.enabled + event_class), which assumes a Symfony event dispatcher.

Integration feasibility (Laravel). Low as shipped. The bundle's value-added wiring — Twig block overrides, Stimulus widget, AssetMapper auto-registration, Symfony session, Symfony event dispatcher — is all scaffolding a Laravel app cannot consume. A viable path exists only if the carrier/geocoding domain classes are free of HttpKernel and Twig coupling and can be instantiated inside a hand-written Laravel service provider. That is an assumption to verify in a spike, not a documented capability.

Technical risk.

  • Provenance / supply chain. The install command references vendor keirontw while the README URL points at BastienMesnil/relay-point-bundle. Confirm this is the same maintainer and not a namespace squat before composer require anywhere near production.
  • First release. v1.0.0 is the initial publication — no upgrade history, no demonstrated API stability, and a 1.0 label on a first cut often signals settling surface area. Do not read "1.0" as maturity.
  • Breadth vs. depth. Twelve carrier integrations is a large maintenance surface; each carrier's API drifts independently, and some (Colissimo, DHL, Chronopost) have credentialed, contract-gated endpoints.
  • Single-maintainer dependency for a checkout-critical path, with no stated support policy.
  • PII in session. Relay point selections are customer-linked address data; GDPR retention and session-store security need explicit ownership.

Key questions for the maintainer/vendor.

  1. Are the carrier provider and geocoder classes usable standalone outside a Symfony kernel (no Twig/AssetMapper/session coupling)?
  2. Minimum PHP and Symfony versions? Is a Laravel bridge or HTTP API on the roadmap?
  3. Which carrier APIs are live vs. stubbed, and what credentials/contracts does each require?
  4. What is the test coverage per carrier provider, and is there a contract-test harness for API drift?
  5. Licensing terms and support/security-response expectations for a single-maintainer package.
  6. What exactly is serialized into the session, and is the storage backend swappable (Redis/multi-node)?

Integration Approach

Stack fit. If the organisation is genuinely on Symfony (with Twig + Stimulus UX, optionally AssetMapper), this is close to turnkey and the assessment is simple: pilot it. If the stack is Laravel, treat this as a domain reference implementation and carrier-integration library, not an installable dependency. The reusable value is the provider interface, the carrier adapters, and the geocoder abstractions — not the bundle.

Migration path. There is no prior release, so no upgrade migration exists. The realistic migration is from whatever is in place today (typically a bespoke Mondial Relay iframe or a single-carrier widget). Recommended path:

  1. Spike (1 sprint): install in a throwaway Symfony app, exercise 2–3 target carriers and one geocoder end to end, and empirically test whether the provider classes instantiate without kernel services.
  2. Decide: (a) adopt wholesale if Symfony, (b) write a thin Laravel service provider over the domain layer, or (c) run it as an isolated Symfony sidecar exposing an internal HTTP endpoint consumed by Laravel. Option (c) is the lowest-risk containment strategy if the domain layer turns out to be coupled.
  3. Rebuild only the presentation layer — Blade/@vite or Livewire in place of Twig/Stimulus — and re-implement the checkout listener against Laravel events/jobs rather than Symfony's dispatcher.

Compatibility. Unknown until answered: PHP constraint, Symfony constraint, and whether symfony/asset-mapper is optional or effectively required for the widget. Session semantics differ materially (Symfony SessionInterface vs Laravel's session store), as does event dispatch. Treat both as adapter code you own.

Sequencing. Carrier integration and geocoding are the long-lead, externally blocked items — validate carrier credentials and API access first, before committing to the UI rework. Geocoder selection should follow (Nominatim's usage policy and Google Maps' billing model have very different operational consequences). Presentation/checkout wiring last, since it is the part most likely to be rewritten regardless.

Operational Impact

Maintenance. Budget for carrier API drift as a standing cost, not a one-off: 12 integrations means an ongoing watch cycle, and the maintainer may not absorb breaking carrier changes promptly. Pin the version, maintain a fork or patch queue, and consider limiting launch scope to the 2–3 carriers that carry real volume rather than enabling all twelve.

Support. Single-maintainer, first release, no published SLA or security process. For a checkout-critical dependency, plan for internal ownership: someone on the team must be able to read and patch the carrier adapters. Escalation to upstream should be treated as best-effort.

Scaling. Two concrete concerns: (1) session-backed selection does not survive horizontally unless the session store is shared and sticky-session-free — verify before load testing; (2) geocoding calls in the selection path are latency- and quota-sensitive, so a cache layer and a timeout-plus-fallback are mandatory. Carrier API calls during checkout should be async or pre-warmed; a synchronous multi-carrier fan-out will show up directly in conversion.

Failure modes and mitigations.

  • Carrier API unavailable → degrade to a manual relay-point entry / cached list, not a blocked checkout.
  • Geocoder quota exhausted or ToS throttled → secondary provider plus local cache; never a hard dependency on Google Maps.
  • Session loss or expiry mid-flow → selection must be re-requestable, with the checkout listener idempotent.
  • Relay point silently not attached to the order → this is the highest-severity failure (parcel misrouted, customer impact, refunds). Instrument it explicitly: assert at order confirmation that a valid relay point ID and carrier code are persisted, and alert on nulls.
  • Vendor namespace confusion → verify and lock the dependency source in composer.json with a commit or tag constraint.

Ramp-up. A Laravel-fluent team will need roughly 1–2 sprints of learning across Symfony UX/Stimulus/Twig plus the carrier domain before contributing confidently; a Symfony team far less. Either way, produce an internal runbook covering credential rotation per carrier, geocoder failover, the session store dependency, and the order-attachment verification query. Recommendation: proceed to a time-boxed spike, but do not commit to this package as a Laravel dependency until the standalone-usability questions are answered.

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.
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
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus