Apparence
Architecture
Slab n'est pas une application monolithique : c'est une pile de packages Composer, chacun avec une responsabilité nette, assemblés par une application skeleton mince.
La pile
apps skeleton (slab/slab, apisell/apisell)
▲ require
┌──────────────────┴───────────────────────────┐
│ apisell/framework (couche B2B, option) │
├───────────────────────────────────────────────┤
│ slab/promotion · slab/payment · slab/carrier │ ← features (packages)
│ slab/frontend (tout le front) │
├───────────────────────────────────────────────┤
│ slab/framework (le cœur : domaine) │
└───────────────────────────────────────────────┘| Package | Rôle |
|---|---|
slab/framework | Le cœur : domaine e-commerce (catalogue, panier, commande, taxe, pricing) + back-office + tous les points d'extension. Vendor fermé à l'édition. |
slab/frontend | Tout le front : contrôleurs, routes front.*, vues, view-models, assets, tunnel de commande. Remplaçable. |
slab/promotion, slab/payment, slab/carrier | Features optionnelles, packagées. Chacune s'enregistre seule et contribue au cœur via les contrats. |
apisell/framework | La couche B2B (grilles tarifaires, devis, comptes entreprise), bâtie au-dessus du cœur. |
Un seul sens de dépendance
Le cœur ne connaît aucun package : il ne référence jamais Promotion, Carrier ni PaymentMethod. Les features se greffent depuis l'extérieur (registres, relations dynamiques). Le frontend ne connaît aucune feature : il lit des données agrégées par le cœur et les rend.
Le skeleton : une application mince
Une boutique Slab est un projet Laravel minimal qui require les packages voulus. Son app/ est quasi vide : le code vit dans les vendors. Le skeleton ne porte que :
- la configuration d'infrastructure (base de données, queue, recherche…) ;
- le sur-mesure propre au client (dans la couche app, qui garde les mises à jour du cœur — ce n'est plus un fork) ;
- éventuellement un thème projet.
Installer une feature = composer require le package. Son service provider est auto-découvert, il enregistre ses contributions, et la feature est active. Aucun flag.
Où va mon code ?
| Vous écrivez… | …ici |
|---|---|
| une feature réutilisable | un package (recette) |
| du sur-mesure projet | la couche app du skeleton |
| une refonte de présentation | un thème (recette) |
| une surcharge ponctuelle de vue | resources/views/vendor/… du skeleton |
Distribution
Les packages slab/* et apisell/* sont publiés sur un registre Composer privé (Satis, composer.stafe.fr). Une application se monte par composer create-project du skeleton, puis évolue par composer require des features.