Build powerful, scalable e-commerce solutions with Laravel 13, PHP 8.5, Filament 5 and Livewire 4 — open-source and ready for production.
Liberu Ecommerce is a modular, production-ready e-commerce platform built on the latest versions of Laravel 13, PHP 8.5, Filament 5 and Livewire 4. It is part of the Liberu open-source ecosystem — a suite of Laravel-based applications designed to give developers a solid, extensible foundation for real-world business software.
Whether you are launching a small online shop or building a multi-vendor marketplace, Liberu Ecommerce provides the tools, architecture and integrations to get there quickly and confidently. The codebase follows Laravel best practices, uses a clean Filament admin panel, and ships with reactive Livewire components so you spend less time on boilerplate and more time on your product.
- Reactive shopping cart and checkout built with Livewire 4
- Multiple shipping methods with server-side rate calculation and drop-shipping support
- Guest and authenticated checkout flows
- Payment gateway factory with pluggable implementations
- Built-in Stripe integration (charges, webhooks, test mode)
- PayPal integration ready to activate
- First-class DropXL supplier integration via
config/dropshipping.php - Supplier order placement queued after successful payment
- Extensible supplier transformation layer for additional providers
- Full product catalogue with categories, attributes and images
- Order persistence, status tracking and order-item management
- Customer Segmentation — target customers based on behaviour, LTV and purchase history
- AI-Powered Product Recommendations — collaborative filtering, personalised suggestions and trending items
- A/B Testing Framework — built-in variant assignment and conversion tracking
- Abandoned Cart Recovery — automated campaigns with email/SMS triggers and discount codes
- Gift Registry — complete registry system for weddings, baby showers and other events
- Loyalty & Rewards Programme — points, tiers and reward redemptions
- B2B Wholesale Pricing — tiered pricing, quote requests and wholesale groups
- Multi-currency & Tax Management — exchange rates and location-based tax calculation
- Refund & Return Management — full RMA system with inventory restocking
Powered by Filament 5, the admin panel provides resources for managing:
- Products, categories, orders and customers
- Customer Segments, Gift Registries, A/B Tests and Cart Recovery Campaigns
- Shipping methods, payment gateways and supplier configuration
- Customer analytics and LTV tracking
- Product performance analytics (views, conversions, return rates)
- Multi-location inventory management
- Conversion funnel analytics
PHP 8.5+ · Composer · Node.js 20+ · MySQL, MariaDB or PostgreSQL · Docker (optional)
git clone https://github.com/liberusoftware/ecommerce-laravel.git
cd ecommerce-laravel
chmod +x setup.sh
./setup.shsetup.sh is interactive: it copies .env.example, confirms database credentials, installs dependencies, generates the key, migrates and seeds. Manual and Docker installs, Stripe configuration and the DropXL setup are in docs/INSTALLATION.md.
| Document | Covers |
|---|---|
docs/index.md |
Index of everything in docs/ — what each document is, and whether it is current |
docs/INSTALLATION.md |
Manual and Docker installs, Stripe, DropXL |
docs/OPERATIONS.md |
Console commands, the admin panels, queues, troubleshooting |
docs/MODULE_DEVELOPMENT.md |
Building, testing, promoting and releasing a module |
docs/CONFORMANCE.md |
Where this repository stands against the Liberu standards |
docs/MIGRATION_PLAN.md |
The ordered plan from here to the modular target |
docs/adr/ |
Architecture decision records |
CONTRIBUTING.md |
The quality gates, the five workflows, and the ADR rule |
SECURITY.md |
Reporting a vulnerability privately, and what is in scope |
CONTEXT.md |
Domain glossary — merchant, team, store, channel, tenant |
Liberu Ecommerce is part of the wider Liberu open-source ecosystem. All projects are built on the same modern Laravel stack and are designed to work together.
Please do not report security vulnerabilities through public GitHub issues. Follow SECURITY.md for private reporting through GitHub Security Advisories, and for what is in and out of scope.
Contributions are warmly welcomed. Branch from main, keep the change to one outcome, and run the gates before pushing:
composer check # Pint, PHPStan, then the test suiteCONTRIBUTING.md has the rest: what each gate checks and why it is scoped the way it is, the five CI workflows, when a change needs an ADR, and the two documents in docs/ with opposite editing rules. Read it before a first pull request — several of the rules here are not the obvious ones, and the reasoning is recorded rather than assumed.
For a larger feature, open an issue first. This repository is mid-migration and the work is sequenced, so a change that lands out of order costs more to reconcile than it saves.
This project is licensed under the MIT Licence — see the LICENSE file for the full text.
The MIT licence is one of the most permissive open-source licences available. In practical terms:
- ✅ Use freely — use the software in any project, commercial or personal, at no cost.
- ✅ Modify — change the source code to suit your needs without restriction.
- ✅ Distribute — share the original or your modified version with anyone.
- ✅ Sublicence — incorporate the code into proprietary software and distribute under your own terms.
- ℹ️ Attribution required — keep the original copyright notice and licence text in any copy or substantial portion of the software.
- ℹ️ No warranty — the software is provided "as is"; the authors accept no liability for damages arising from its use.
Choosing MIT means you can adopt Liberu Ecommerce as the foundation for a commercial product without legal concerns, while still benefiting from community improvements and contributions.
.github/workflows/sync-packages.yml publishes packages changed under modules/
or themes/ on pushes to main. A manual run reconciles all tracked packages.
Each package needs a composer.json with a liberusoftware/* name. Files are
copied from Git into the root of liberusoftware/module-<directory> or
liberusoftware/theme-<directory>. Where .liberu-meta.json defines a
repositoryPrefix, that design is authoritative (for example,
modules/module-manager becomes module-module-manager). Without a configured
prefix, an existing module- or theme- directory prefix is kept. Destination
history is preserved, deleted files are removed, and unchanged packages do not
receive another commit or release. Removing an entire package leaves its public
repository intact. This workflow makes tracked package edits publishable; install
checks still require the project's Composer dependencies to resolve to those
published package contents.
Configure these secrets in the packagist GitHub environment (or as repository
or organization secrets available to this repository):
MODULE_SYNC_TOKEN: organization-authorized GitHub token able to create public repositories and read/write package contents and releases across the target repositories. Because package snapshots include.github/workflows, allow workflow writes too. A classic PAT needsrepoandworkflowscopes and an organization role permitted to create repositories. The defaultGITHUB_TOKENcannot publish across these repositories.PACKAGIST_USERNAME: Packagist account that owns or maintains these packages.PACKAGIST_API_TOKEN: that account's main API token, required to submit new packages as well as update existing packages.
New packages start at their declared stable Composer version, or v1.0.0.
Existing packages use the highest stable repository tag: a higher declared
Composer version wins, BREAKING CHANGE: or type!: commits bump major,
feat: commits bump minor, and other changes bump patch. Only commits touching
the package since the last successful sync affect this decision. The first
automated run and manual runs reconcile all packages, so canceled or failed
runs cannot silently drop package changes. Tags and commits are
pushed atomically, then a GitHub release is created and the package is submitted
to or refreshed on Packagist. Rerunning a failed job completes publication
without issuing another release for the same contents. Concurrent pushes from
other projects are rejected instead of force-pushed; rerun the failed job.
The source project and its lockfile are not rewritten by publication. Different
projects publishing the same directory name share a destination repository;
coordinate their package contents. Run the publisher's local tests with
python3 -m unittest discover -s .github/scripts -p 'test_sync_packages.py'.
