liberusoftware / ecommerce-commerce-core
Stores, channels and the commercial context every other Ecommerce module resolves against.
Package info
github.com/liberusoftware/module-ecommerce-commerce-core
Type:liberu-module
pkg:composer/liberusoftware/ecommerce-commerce-core
Requires
- php: ^8.5
- laravel/framework: ^13.0
- liberusoftware/module-manager: ^1.4
Requires (Dev)
- liberusoftware/package-testbench: ^1.6
- pestphp/pest: ^5.0
README
This package is the authoritative, provider-neutral implementation of Commerce Core. It owns domain behavior and data; optional API, Filament, Livewire, React, Vue, and Nuxt packages translate its public contracts for their surfaces.
Software · Hosting · Services · Liberu Group
Features
- Fully compatible with Laravel 13, PHP 8.5, and Pest 5.
- Built following the domain-driven design guidelines of the Liberu architecture.
- Reusable, presenting a clean public contract and boundaries.
- Adheres to the strict database, security, and authorization standards of Liberu.
Requirements
- PHP 8.5
- Composer 2
- A supported database (e.g. MySQL, PostgreSQL, SQLite)
Quick start
To install this package via Composer, run:
composer require liberusoftware/ecommerce-commerce-core
Installing boots nothing. The module ships no extra.laravel.providers, so
ModuleManagerServiceProvider is the only thing that registers it, and only
when the deployment names it:
MODULES_ENABLED=ecommerce-commerce-core
What the host owns
Two things are deliberately left to the application, because a module that did them would only install into one application.
The team model. Store::team() resolves config('commerce-core.team_model')
at call time, defaulting to App\Models\Team. An application whose team model
lives elsewhere publishes the config and says so:
php artisan vendor:publish --tag=commerce-core-config
The trusted-host list. channel_domains is the natural source for it, and
a host that caches it should clear the cache when the table changes. Register
that once on the model rather than at the call sites that add domains — a cache
invalidated by whoever remembers goes stale, and stale here means a merchant
adds a domain and their storefront answers 400 until something else clears it:
ChannelDomain::saved(fn () => Cache::forget(TrustHosts::CACHE_KEY)); ChannelDomain::deleted(fn () => Cache::forget(TrustHosts::CACHE_KEY));
Documentation
- Adoption guide — install, enable, and what the host must supply
- The domain — aggregates, actions, queries, events, authorization, tables
- Runbook — what breaks in production and what to do about it
- Changelog
- Liberu Main Documentation
- Architecture & Standards Index
Related Liberu Projects
| Project | Repository | Purpose |
|---|---|---|
| Boilerplate | liberusoftware/boilerplate-laravel | Shared Laravel application foundation and reference composition |
| CMS | liberu-cms/cms-laravel | Structured content, publishing, media, multisite, and headless delivery |
| CRM | liberu-crm/crm-laravel | Customer data, sales, marketing, service, and customer success |
| Billing | liberu-billing/billing-laravel | Products, subscriptions, invoicing, payments, and provisioning |
| Accounting | liberu-accounting/accounting-laravel | Ledgers, banking, tax, expenses, close, and financial reporting |
| Ecommerce | liberu-ecommerce/ecommerce-laravel | Catalog, checkout, orders, fulfillment, returns, B2B, and omnichannel commerce |
| Control Panel | liberu-control-panel/control-panel-laravel | Hosting, infrastructure, DNS, mail, databases, backups, and security operations |
| Automation | liberu-automation/automation-laravel | Governed workflows, provider-neutral AI, approvals, and connectors |
Security
Please do not report security vulnerabilities through public GitHub issues. Follow our Security Policy for private reporting and supported versions.
License
This project is open-source software. You may use, modify, and distribute it under the terms described in LICENSE.md.
The linked license text is authoritative; this summary is not legal advice.
Feedback and contributing
Feedback and contributions are welcome. You can help by reporting reproducible bugs, proposing focused enhancements, improving documentation or translations, and submitting tested code changes.
Before contributing, please read CONTRIBUTING.md and our Code of Conduct. Search existing issues first, then use the appropriate issue template. Pull requests should explain the problem and approach, remain focused, include or update tests, pass the required workflows, and document user-visible or breaking changes.
Contributors
Thank you to everyone who helps improve Liberu.