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.
Architecture fit
v1.0.3 resolves the central ambiguity of the prior assessment: this is a full Laravel application scaffold, not a distributable library. The release notes describe composer create-project as the intended install path, Filament panels (/app and admin), Fortify authentication, Socialstream social login, and a Shield-based permission set. No service provider or contract surface is implied anywhere.
The confirmed architecture is a multi-panel modular monolith with partial multi-tenancy:
admin → super_admin role, app → team membership. Panel access is now a real gate rather than return true.config('permission.teams') is false, so roles are global despite code that reads as team-scoped. This is a meaningful architectural constraint: any requirement for per-tenant role definitions, per-store staff permissions, or tenant-admin delegation requires work, not configuration.TeamPolicy::create gated on create_store. That is a defensible design and a reasonable fit for a mid-market commerce build. It remains a poor fit for headless/composable or multi-service targets.Integration feasibility
Feasibility improves materially, but a new class of friction replaces it.
liberu-ecommerce/ecommerce-laravel, so the canonical org question is substantially closed. The AGENTS.md reference to liberusoftware/ecommerce-laravel should still be treated as stale metadata, not a second canonical repo, until issue-tracker links are checked.composer create-project fetches v13.0.0 unless the caller pins 1.0.3. The v1 tag was moved. This is a supply-chain-adjacent trap: the default install path yields a different, older codebase than the one documented. Every automated install, CI template, and onboarding doc must pin 1.0.3 explicitly.Technical risk — HIGH (recharacterized)
The risk profile has shifted from unknown scope to known but unresolved security and authorization debt. That is easier to price and harder to dismiss.
canAccessPanel ended in return true; // TODO: Check panel and role, admitting a user with zero roles and zero teams into Products, Orders, Invoices, and Customers. It was masked only because registration threw first. The maintainers state this plainly: fixing registration alone would have opened the door. This is the single most important data point in the update — it demonstrates that a green CI run and a passing release did not imply a safe authorization posture.FortifyActionsTest::makeTeam() created the team and the staff role, fabricating the exact precondition that real signup could not produce. The test was removed. Coverage breadth is therefore not evidence of behavioural fidelity; test realism must be assessed separately.ArticleResource and CollectionResource have no policy and strictAuthorization is off, so a team member can CRUD their own tenant's articles and collections — including price — without a permission check. Reachability now requires a team, which is a mitigation, not a fix. Closing it requires policies and seeded permissions together, because the Shield set has no article_*/collection_* entries at all.image/svg+xml to a public disk. Unreachable today only because public/storage is not linked; it becomes live the moment storage:link runs. This is a one-command distance from exploitable and must be treated as a pre-launch blocker.Password::default() is min 8 with no complexity and no breach check.RoleBasedRedirect comes from a property-management application and its six targets all 404. This is provenance evidence: the codebase contains copy-paste inheritance from sibling projects, which raises the prior on finding more.inventory_count = 0 on every product means the demo storefront ships sold out — a poor evaluation artifact and a potential trap for anyone using seeders as a reference implementation.Key questions — status
composer create-project. Confirm composer.json type and whether any require-able path exists./orders, /wishlist, /invoices, /payment_methods), checkout with intended() redirect, social login. Still unresolved: payments, tax, inventory movements, fulfillment, refunds.CONTEXT.md and docs/adr/ contain real content? Still unanswered and still load-bearing for ramp-up cost.Stack fit
Fits a Laravel monolith with Filament (admin and app panels), Fortify, Socialstream, and Filament Shield, on PHP 8.x. The presence of panel-specific authorization predicates means the target must actually want a panel-based back office; a headless or API-only target would inherit substantial unused surface. Confirm the Laravel major supported by the v1 line — the abandonment of the Laravel-tracking version scheme is a hint that the framework floor moved and the mapping was no longer useful.
Migration path
Unchanged in shape — greenfield accelerator, not a dependency — but the first step now has a hard prerequisite:
composer create-project liberu-ecommerce/ecommerce-laravel:1.0.3 explicitly. Never rely on default resolution. Record the resolved commit SHA alongside the tag.super_admin / unauthenticated. Time-box to three engineer-days, up from two, because authz verification is now mandatory scope.ArticleResource/CollectionResource plus the missing article_*/collection_* Shield permissions; block or sanitize image/svg+xml uploads and make storage:link conditional on that fix; tighten Password::default(); delete RoleBasedRedirect.There is still no "migrate off" path because nothing is yet integrated. The real cost remains divergence, and it is now larger: our fork will carry security fixes upstream may never take.
Compatibility
permission.teams = false) while team membership gates the app panel. If requirements include tenant-scoped roles, budget re-architecture, not configuration.HasConnectedAccounts trait on User; /user/profile breaks when social login is enabled. Treat social login as not production-ready in this release.Sequencing
Maintenance
Ownership transfers to us on fork, unchanged. Upstream is demonstrably active (v1.0.2 → v1.0.3, targeted fixes, honest disclosure of known issues) — a better signal than the prior assessment could offer. But we inherit the authz model, the permission set, and the panel predicates, and we become responsible for the open items upstream has flagged but not fixed. Expect to own framework upgrades, dependency patching, and policy work.
Support
Community-only via GitHub Issues; canonical org now effectively resolved to liberu-ecommerce. Still no vendor, no SLA, no commercial backing. The release notes are unusually candid, which is operationally valuable — but candor is not a support contract. Budget a named internal maintainer with allocated capacity, and assign explicit ownership of the open known-issues list.
Scaling
Inherited from Laravel and our infrastructure, with two package-specific caveats:
Failure modes
super_admin / unauthenticated) running on every commit, including upstream syncs.storage:link. Mitigate by remediating before linking, and by adding upload-type tests.v1 tag moved). Pin by commit SHA, never by tag.RoleBasedRedirect proves copy-paste from sibling projects. Budget for finding more dead or wrong-domain code during onboarding.inventory_count = 0 suggests inventory handling is not exercised end-to-end.Ramp-up
Laravel-fluent engineers remain productive within days on the framework layer. Domain comprehension cost is now better characterized and slightly higher: the codebase mixes storefront, admin, multi-panel authz, Shield permissions, Socialstream, and inherited foreign-domain code. Onboarding should include the authz model first (panel predicates, TeamPolicy, global-role caveat), then the ADR set, then a written divergence and patch-set policy before any engineer commits. If CONTEXT.md and docs/adr/ are substantive this drops to days; if placeholders, budget one to two weeks of reverse-engineering per engineer. The v1.0.3 postmortem is the best onboarding document currently available and should be required reading — it explains the authorization design better than any other artifact.
How can I help you explore Laravel packages today?