đ Lunar : un e-commerce Laravel qui ne ressemble pas Ă un fork de Magento
đ Introduction
CĂŽtĂ© Symfony, on a Sylius qui rĂ©pond Ă la question âcomment je fais du e-commerce sur-mesure sans repartir dâun Magentoâ. CĂŽtĂ© Laravel, la rĂ©ponse a longtemps Ă©tĂ© : âtu prends Spark ou Cashier et tu codes le catalogue Ă la mainâ. Pas idĂ©al.
Lunar change ça. Câest un package e-commerce headless pour Laravel, sous licence MIT, qui pose les bonnes fondations sans imposer un univers parallĂšle. Pas de templates Twig Ă la Sylius, pas de DSL custom Ă la Magento. Du Eloquent, des migrations, un admin Filament. Si tu Ă©cris du Laravel tous les jours, Lunar te parle.
Dans ce post, jâexplique pourquoi Lunar mĂ©rite dâentrer dans la short-list 2026 pour un projet e-commerce Laravel, et oĂč il atteint ses limites.
đ§± La promesse : Laravel partout
Lâangle de Lunar est radicalement diffĂ©rent de celui de Sylius ou Magento. Pas de bundle, pas dâextension point sur-conçu. Juste des modĂšles Eloquent que tu utilises comme nâimporte quel modĂšle Laravel :
use Lunar\Models\Product;
use Lunar\Models\ProductVariant;
$product = Product::create([
'attribute_data' => collect([
'name' => new \Lunar\FieldTypes\TranslatedText(['fr' => 'T-shirt']),
'description' => new \Lunar\FieldTypes\TranslatedText(['fr' => 'Coton bio']),
]),
'status' => 'published',
'brand_id' => $brand->id,
]);
ProductVariant::create([
'product_id' => $product->id,
'sku' => 'TS-001-M',
'stock' => 100,
]);Tu peux Ă©tendre ces modĂšles, Ă©couter leurs events, crĂ©er des observers â comme nâimporte quel modĂšle Eloquent. Câest ce qui rend la courbe dâapprentissage tellement plus douce quâavec un Magento.
đ Installation
Lâinstall standard est un Composer + une commande artisan :
composer require lunarphp/lunar
php artisan lunar:install
php artisan migrateLunar installe son admin Filament, ses migrations, et ses seeders. Si tu connais dĂ©jĂ Filament, tu te retrouves en terrain familier : Resources, Pages, Widgets, tout y est. Lâadmin est immĂ©diatement utilisable, sans tuning.
La derniĂšre version stable au moment oĂč jâĂ©cris ces lignes est Lunar 1.3 (janvier 2026), compatible Laravel 11 et 12, PHP 8.2+.
đ§° Ce qui est dans la boĂźte
Lunar livre la couche métier complÚte :
- Catalogue : produits, variantes, collections, attributs typés (text, number, file, translated text).
- Pricing : multi-currency natif, tax zones, tiered pricing pour le B2B.
- Carts & Orders : pipeline-based, donc chaque étape (taxe, shipping, discount, total) est un step que tu peux remplacer.
- Customers : groupes, profils, B2B-ready.
- Stock & Shipping : inventaire multi-warehouse, méthodes de livraison configurables.
- Discounts : moteur de promotions Ă conditions composables.
- Scout integration : la recherche produit utilise Laravel Scout dÚs le départ.
Ce qui me plaĂźt : tout est lazy. Tu peux dĂ©sactiver multi-currency si tu nâen as pas besoin, idem pour le multi-warehouse. Tu nâhĂ©rites pas dâune complexitĂ© que tu ne consommes pas.
đ Headless et frontend
Lunar ne livre pas de storefront prĂȘt Ă lâemploi (contrairement Ă Sylius qui propose un shop Twig). Câest volontaire : la vision officielle est que tu construis ton storefront avec le framework que tu veux. Inertia + React, Inertia + Vue, Livewire, Astro consommant lâAPI REST, Next.js â tu choisis.
Pour exposer Lunar en API, le pattern recommandĂ© est de monter une API REST custom au-dessus des modĂšles Eloquent. La couche Eloquent Ă©tant standard Laravel, tu branches API Resources, Sanctum et un router classique, ou tu passes par un kit comme lunarphp/livewire-starter-kit cĂŽtĂ© storefront full-stack. Câest moins out-of-the-box que Sylius + API Platform, mais ça force une frontiĂšre nette entre Core mĂ©tier et API publique.
đŻ Quand choisir Lunar
- Tu as une équipe Laravel et tu veux capitaliser sur cette compétence.
- Tu veux un admin moderne dĂšs lâinstall sans devoir customiser un back-office obscur.
- Tu fais du B2B (groupes clients, prix par paliers, multi-warehouse) sans vouloir un Magento.
- Tu construis un headless storefront consommant lâAPI depuis un framework SPA / SSR moderne.
- Tu utilises dĂ©jĂ Filament pour dâautres admin internes â tout sera homogĂšne.
đ Lunar vs Sylius
Les deux jouent dans la mĂȘme catĂ©gorie. Le choix dĂ©pend de ta stack.
| CritĂšre | Lunar (Laravel) | Sylius (Symfony) |
|---|---|---|
| Framework hĂŽte | Laravel 11+ | Symfony 7+ |
| Couche dâadmin | Filament (Livewire) | Twig + Bootstrap |
| API headless | Ă assembler (Laravel custom) | API Platform natif |
| Maturité B2B | Bonne, en progression | TrÚs bonne (workflows mûrs) |
| Tests / BDD | Pest | Behat (gros set) |
| Licence | MIT | MIT |
| ĂcosystĂšme plugins | Naissant | TrĂšs large |
Lunar est plus jeune mais plus agréable à hacker pour un dev Laravel. Sylius est plus mature et structuré pour le B2B complexe.
â ïž Quelques prĂ©cautions
- Storefront Ă construire : ce nâest pas un Shopify. Compte un sprint de mise en place du frontend.
- Couche API : Lunar ne livre pas dâAPI REST officielle prĂȘte Ă lâemploi. Tu lâassembles avec API Resources et Sanctum, ou tu adoptes un starter kit communautaire. VĂ©rifie la maturitĂ© du choix avant de tâengager.
- Migration de version : 1.x est en évolution active, lis le changelog avant les majeures. Les migrations Eloquent peuvent toucher des tables avec beaucoup de données.
- Multi-currency : trĂšs bien fait mais pense au taux de change dynamique. Lunar gĂšre la structure, pas la mise Ă jour du taux. Tu branches une source.
đ Conclusion
Lunar est la meilleure proposition Laravel pour du e-commerce sĂ©rieux en 2026. La trajectoire est claire, la communautĂ© grandit, et lâapproche âdu Eloquent purâ rend le code agrĂ©able Ă maintenir. Si tu construis un nouveau projet e-commerce avec une Ă©quipe Laravel, câest lâoption Ă Ă©tudier en prioritĂ©.
Reste un grand absent par rapport Ă Sylius : la profondeur des plugins mĂ©tier prĂȘts Ă lâemploi. Si tu as besoin de fonctionnalitĂ©s trĂšs spĂ©cifiques out-of-the-box (multi-vendor marketplace mature, pricing rules trĂšs avancĂ©es), Sylius garde une longueur dâavance. Sur les fondations, Lunar joue dĂ©jĂ dans la mĂȘme cour.