liberu-eccommerce/ecommerce-laravel
A modular Laravel ecommerce package with products, carts, checkout, orders, payments, taxes, shipping, and admin-ready essentials out of the box. Built for modern PHP apps, its clean, extensible architecture helps you launch, customize, and scale online stores quickly, from catalog to fulfillment.
admin and /app panels covering Products, Orders, Invoices, Customers, plus articles/collections, a team/tenant model, a storefront with /orders, /wishlist, /invoices, /payment_methods, and social login. That is a meaningful head start on the plumbing and admin surface of commerce. It still evidences nothing for pricing, tax, shipping, promotions, inventory correctness, or payments — and the release notes show the domain layer is where the debt lives.Team::first() (the merchant's own team) with a staff role, while canAccessPanel ended in return true; // TODO. It only stayed hidden because registration threw first. This is directly usable as a design review artifact for our own multi-tenant authz model, and as a concrete argument for buying an authz-reviewed platform if we cannot staff a security review.ArticleResource/CollectionResource have no policies with strictAuthorization off (tenant members can CRUD articles and collections, including price, without a permission check); latent SVG stored XSS from image/svg+xml uploads to a public disk, live the moment storage:link runs; /user/profile breaks when social login is enabled; Password::default() is min-8 with no complexity or breach check. These are not "read the README" gaps — they are authorization and input-handling defects. This supports a prototype/internal tool decision and explicitly not a platform bet.composer create-project silently lands on the pre-fix v13.0.0 unless you pin 1.0.3. For a PM this is a roadmap item in its own right: any adoption must include a pinned version and a documented upgrade path, because "latest" is not the fixed version.FortifyActionsTest::makeTeam()) that papered over the bug by creating the team and the role the code assumed. Combined with the AGENTS.md / triage-label / CONTEXT.md / docs/adr/ conventions already noted, the maintainer-communication and test-discipline story is the most credible thing in this repo — and it is copyable independent of the code.inventory_count = 0 on every product, so the demo storefront ships sold out), fulfillment, or payments. Treat as substrate plus admin UI, not as a commerce feature set.Consider it when:
1.0.3 or later, and harden: write the missing article_*/collection_* policies and their Shield permissions together, enable strictAuthorization, restrict upload MIME types and add storage:link hardening, fix the Socialstream/HasConnectedAccounts gap, and turn password rules up.Look elsewhere when:
For executives: This is a free, MIT-licensed Laravel ecommerce application — now clearly more than a scaffold, since it ships an admin for products, orders, invoices and customers, a tenant/team model, and a storefront. It buys us weeks of scaffolding and an admin UI, plus a documented workflow for AI-assisted engineering and architecture decision records. The latest release fixed a serious authentication flaw where new registrants were attached to the merchant's own team with staff access — the fix is correct and verified, but the fact that it shipped within the v1 line tells you the security review is us, not them. It is also easy to install the wrong (pre-fix) version because of a broken version sequence, so adoption requires pinning. Recommendation: fund a four-to-six week spike against our next commerce initiative, with explicit go/no-go gates at (a) security review of the authz and upload paths and (b) proof that we get past week two faster than building from scratch.
For engineering: Treat this as a fork candidate, never a bare dependency, and pin 1.0.3 explicitly — composer create-project otherwise resolves the old Laravel-tracking v13.0.0, which predates the auth bypass fix. Read CreateNewUser::assignOrCreateTeam and canAccessPanel first; they are the clearest statement of the intended tenant model and of how it was violated. Then close the known issues in this order: article_*/collection_* policies plus matching Shield permissions (they must land together, since the Shield set has no such entries), strictAuthorization on, SVG upload rejection or sanitisation before anyone runs storage:link, the HasConnectedAccounts comment-out if social login is in scope, and Password::default() hardening. Also note RoleBasedRedirect is dead code inherited from a property-management app (all six targets 404) and config('permission.teams') is false, so roles are global despite team-scoped-looking code — delete or reconcile before building on top. The one thing worth lifting regardless of whether we adopt the code is the AGENTS.md / triage-label / CONTEXT.md / docs/adr/ workflow.
For finance/procurement: No licence cost, no vendor lock-in, no renewal. The real cost has changed shape: we are not just maintaining a fork, we are funding the security review that upstream has not had. Budget for a named owner indefinitely, no upstream to lean on for security patches beyond the Laravel ecosystem itself, and no disclosure process to notify us of the next issue like v1.0.3's. Compare that total against a commerce platform licence before approving anything beyond a time-boxed spike.
How can I help you explore Laravel packages today?