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

Shoppingcart Laravel Package

anayarojo/shoppingcart

A flexible shopping cart package for Laravel with a simple API for adding, updating, and removing items, applying conditions and attributes, and persisting carts to session or database storage. Well suited for building e-commerce checkout flows.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for cart/checkout foundations. The cart is a high-cost, low-differentiation component: session/DB persistence, line-item mutation, subtotal/tax/shipping math, coupon hooks, and price snapshotting. A package like this lets the team spend its differentiation budget on merchandising, pricing logic, and post-purchase experience instead of re-deriving cart arithmetic.
  • MVP scope and launch sequencing. Adopting it unblocks a first transaction-capable release while deferring the expensive parts (multi-currency, tax engines, promotions stacking) to later roadmap phases. It is a "ship the flow, defer the edge cases" decision.
  • Roadmap dependencies for revenue features. Abandoned-cart recovery, guest-to-account cart merge, "save for later," and cart-value-based shipping thresholds all depend on the cart having a queryable persistence model with timestamps — this is a scoping input for whether the package's storage strategy can support those features later, or whether they need to be built around it.
  • Pricing and promotions architecture. Whether discounts apply at line-item or cart level, and in what order relative to tax and shipping, is a product decision with finance and legal consequences (tax calculation order, refund amounts, invoice line items). Choosing a package is effectively choosing a default ordering — this must be validated against actual commercial policy before commit, not after.
  • Integration surface for checkout and payment. The cart is the handoff point to payment (Stripe, Paddle, hosted checkout). Deciding whether the cart produces a canonical "order intent" payload determines how replaceable the package is later — a key architectural hedge.
  • Vendor and maintenance risk posture. With 56 stars, zero dependents, and a single-maintainer profile, adoption is a conscious bet on a low-blast-radius dependency rather than on an ecosystem. That is a legitimate decision for a cart layer, but it should be recorded as a risk acceptance, not an accident. Update (4.2.5): the package now ships a Laravel 13 dependency bump (via laravel-shift), which is direct evidence that the maintainer keeps framework currency current. This materially reduces — but does not eliminate — the "abandoned package becomes an upgrade blocker" risk, and it does not change the adoption bet itself: it's still one maintainer, still near-zero downstream validation.

When to Consider This Package

Reasonably strong fit when:

  • The stack is Laravel and the checkout is server-rendered, Livewire, or Inertia-based — the package's assumptions will align with the framework's session and ORM model.
  • The catalog is straightforward: single currency, one tax regime (or tax deferred to a provider like Stripe Tax / TaxJar), and pricing that does not require per-customer negotiated rates.
  • You need a transaction-capable flow in weeks, not quarters, and the team has no prior e-commerce domain experience.
  • The cart is a means to revenue, not the product itself — no marketplace, no multi-seller split, no subscription proration complexity.
  • Engineering is willing to wrap it behind an internal CartService interface so the dependency never leaks into controllers, views, or API contracts.

Look elsewhere when:

  • Scale or throughput is a stated requirement. Session-based carts with per-request recalculation are fine at low volume and become a performance and consistency problem under concurrency (double-submits, inventory races). That needs a different data model, not a different package.
  • You need promotional complexity. Stacking rules, BOGO, tiered and customer-group pricing, and gift-with-purchase generally exceed what a small cart package models and are better served by a dedicated promotions engine or a commerce platform.
  • Ecosystem maturity is a hard gate. Zero dependents and a 56-star footprint mean no downstream validation, no Stack Overflow corpus, no third-party tutorials, and no commercial support. If your organization requires vendor SLAs or a proven install base, this fails procurement regardless of code quality — and one Laravel-compatibility patch does not change that gate.
  • Multi-tenant, marketplace, or B2B quoting is on the near roadmap — these change the cart's ownership and pricing model fundamentally.
  • Better-supported alternatives already satisfy the requirement: darryldecode/cart (far larger install base, longer track record) for a straightforward cart; Lunar or Bagisto for a fuller commerce domain model; Stripe Checkout / Paddle hosted flows if you want to own almost no cart logic at all.

Due diligence before committing (non-negotiable):

  1. Read the source, not the README — verify test coverage, CI status, and whether the last release reflects real maintenance or a version bump.
  2. Confirm Laravel version support against your current and next-upgrade targets. Partly addressed by 4.2.5: Laravel 13 compatibility is now declared, so the near-term upgrade path looks clear. Still verify the composer.json constraints explicitly — confirm that (a) Laravel 13 is genuinely supported and (b) support for your current Laravel version was not dropped, since framework-major bumps sometimes ship in patch releases and can silently narrow the supported range.
  3. Verify the persistence model: does it survive session loss, support guest-to-user merge, and expose cart rows for abandoned-cart queries?
  4. Confirm decimal handling — integer minor units or a money library. Float arithmetic in a cart is a finance bug waiting for its first support ticket.
  5. Check the tax/discount/shipping application order against your actual invoicing requirements.
  6. Establish an exit plan: fork it, or wrap it. Never both-skip this step.

How to Pitch It (Stakeholders)

For executives — the one-paragraph version: The shopping cart is commodity infrastructure. We can build it, but doing so costs roughly one to two engineering sprints plus ongoing maintenance for logic that creates zero customer-visible differentiation. This MIT-licensed Laravel package gives us a working cart layer at effectively no licensing cost, letting the team reach a transaction-capable release sooner and redirect that effort to conversion, merchandising, and retention work. The tradeoff is genuine but contained: the package has a small community footprint (~56 stars, no downstream dependents) and a single-maintainer risk profile, though the latest release (4.2.5) confirms it is being kept current with Laravel 13 — a positive maintenance signal that lowers our upgrade risk. We further mitigate by keeping it behind an internal interface so it can be replaced or forked without touching checkout, and by treating it as a starting point for the MVP, not a permanent platform commitment. Recommended decision: adopt for the MVP with an explicit re-evaluation gate at first meaningful order volume (or at the next Laravel major upgrade, whichever comes first).

For engineering — what we're actually asking for: Adopt it as a dependency, not as an architecture. Concretely: (1) wrap it in an internal service with our own domain types so the package namespace appears in exactly one layer; (2) own the money type and rounding ourselves regardless of what the package defaults to; (3) own the discount/tax/shipping ordering as explicit, tested application code; (4) write integration tests against our real checkout path, since upstream tests won't cover our usage; (5) pin the version, verify the 4.2.5 composer.json constraints against our target Laravel versions, and vendor-review any upgrade. If any of those five are unacceptable, the correct answer is to build the ~500 lines ourselves — the package only pays for itself if the wrapping discipline holds.

Known risks to state plainly: low adoption means low informal support; no commercial backing means bus-factor of one; and a cart package that lags a Laravel major release becomes an upgrade tax on the whole application. Release 4.2.5 moves the last risk from "unproven" to "currently managed" — note that the bump was produced with laravel-shift tooling, which demonstrates responsiveness to framework releases but is not evidence of feature development, code-quality review, or long-term commitment. The bus-factor and support risks are unchanged. None of these are blocking for an MVP; all of them remain blocking for a multi-year 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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console