venturedrake/laravel-neto
Laravel Neto is a Laravel package for integrating with the Neto (Maropost Commerce Cloud) e-commerce API. It provides a convenient client to retrieve and manage products, orders, customers, and inventory from your Laravel application, with configurable credentials and a simple, expressive interface.
Architecture fit
Orders, Items, Customers), and typed exceptions. This is the pattern most Laravel teams already expect, so cognitive load is low.request() / get() as a generic escape hatch is the single most important architectural decision here: it means gaps in resource coverage do not force a fork or a parallel bespoke client. Preserve that boundary when wrapping the package internally.Integration feasibility
cancel, status, and tracking, plus items and customers with findByEmail. That is a credible v0.1 for order-sync and customer-lookup use cases.Technical risk
get/find, but create, update, and cancel are not inherently idempotent. Without a documented idempotency story, a timeout-then-retry can produce duplicate orders or double-applied status changes. This is the highest-severity risk in the release notes.Key questions
create / cancel?Http::fake compatibility, a fake client, contract tests) so we can test our integration without hitting the live API?Stack fit
request() escape hatch means we can route all Maropost traffic through this client rather than maintaining a bespoke one.Migration path
OrderGateway) with the package as one adapter implementation. This contains 0.x churn to a single file and preserves the option to swap or vendor the client.Compatibility
.env committed to a repo.Sequencing
Http::fake support.findByEmail and order get/find in a non-critical reporting or support tool.create/update/cancel behind a feature flag, with application-level duplicate suppression and alerting on retries.request() usage and upstream any recurring patterns as resource methods.Maintenance
0.1.0) and upgrade deliberately. Budget recurring effort for 0.x breaking changes — assume at least one disruptive minor release per quarter while pre-1.0.Support
request() method, or direct HTTP as last resort, if the package stalls on a platform change.Scaling
get semantics (filter/limit) are reachable through request(); if so, prefer a few large filtered reads over many point reads.Failure modes
create — highest severity; mitigate with application-level idempotency keys and reconciliation queries.ConfigurationException and RequestException are distinguishable in alerting.request() fallback.Ramp-up
cancel, status, tracking transitions) and the platform's filtering/pagination model. Assign that to whoever owns the commerce domain, not whoever owns the integration.How can I help you explore Laravel packages today?