Youvanna Shop
Extension WordPress e-commerce custom, legere et rapide, alternative a WooCommerce
by Agence Youvanna · github.com/agenceyouvanna/youvanna-shop · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/agenceyouvanna/youvanna-shop/archive/refs/heads/main.zipExtension WordPress e-commerce légère, custom, pensée pour remplacer WooCommerce quand ce dernier est trop lourd ou trop lent.
Conçue pour les sites de l'agence Youvanna, réutilisable tel quel sur n'importe quel site WordPress.
Objectifs
- Rapide : zero postmeta, tables dédiées indexées, REST API avec cache-control, pas de fragments AJAX jQuery.
- Léger : aucune dépendance Composer à l'install, autoload PSR-4 natif, pas de SDK Stripe embarqué (HTTP direct).
- Réutilisable : tout se configure via options
yv_shop_*, filtres et CSS variables. Zero hardcoding. - Sécurisé : paniers signés HMAC-SHA256 + session cookie, prix recalculés côté serveur au checkout, secrets Stripe chiffrés AES-256-GCM, webhooks vérifiés + idempotence.
Fonctionnalités V1
- Catalogue produits (simples), variations, catégories, étiquettes, attributs dynamiques.
- Stocks gérés (décrément atomique), réservations TTL.
- Filtres : catégories, prix, attributs, recherche plein texte.
- Panier localStorage + sync REST.
- Checkout : virement bancaire et Stripe (Payment Intents).
- Taxes par classe et pays, livraison par zone avec seuil gratuit.
- Emails transactionnels (confirmation, paiement, expédition).
- Admin : dashboard, CRUD produits, commandes, attributs, réglages.
- WP-CLI : import produits CSV, diagnose, purge reservations.
- Templates surchargeables via
theme/yv-shop/*.php.
Pré-requis
- WordPress 6.4+
- PHP 8.1+
- MySQL 5.7+ (pour les colonnes JSON)
Installation
- Cloner ou télécharger dans
wp-content/plugins/youvanna-shop/. - Activer depuis l'admin WordPress.
- Configurer dans Youvanna Shop -> Réglages : devise, slugs, TVA, moyens de paiement.
- Placer les shortcodes
[yv_shop],[yv_shop_cart],[yv_shop_checkout]sur leurs pages dédiées (créées automatiquement à l'activation).
Architecture
src/
Plugin.php # Bootstrap
Container.php # DI léger
Activator.php # Install : tables, options, capabilities, pages
Migrator.php # Migrations versionnées avec GET_LOCK
Models/ # Product, Order, Cart, SearchCriteria
Repositories/ # ProductRepository, OrderRepository, CartRepository
Services/ # PriceCalculator, TaxResolver, ShippingResolver, CartHasher, Encryption
REST/ # Router + 7 controllers
Payments/ # GatewayInterface, StripeGateway, BankTransferGateway
Admin/ # Menu, Dashboard, Settings, ProductsListTable, OrderEditor, etc.
Frontend/ # Router, Shortcodes, TemplateLoader
Emails/ # Mailer
CLI/ # Commands
Cron/ # Scheduler
migrations/
001_initial_schema.php # 13 tables
templates/ # archive, single, cart, checkout, parts/*
assets/dist/ # shop.css, store.js, mini-cart.js, shop.js, product.js, cart.js, checkout.js
REST API
Base : /wp-json/yv-shop/v1/
GET /products- liste avec filtresGET /products/{id}- produit par IDGET /products/slug/{slug}- produit par slugGET /products/facets- facettes (catégories, prix, attributs)GET /categoriesGET /attributesPOST /cart/sync- synchronise le panier et retourne un cart_hash signé HMACGET /cart/{hash}- lit un panier signéPOST /checkout/intent- crée la commande et l'intention de paiementGET /orders/{number}/{key}- lecture d'une commandePOST /webhooks/{gateway}- webhook paiement (Stripe)
Personnalisation
Via options
Toutes les options commencent par yv_shop_* : yv_shop_general_currency, yv_shop_general_shop_slug, yv_shop_tax_default_rate, etc.
Via hooks
Voir src/Hooks.php pour la liste complète. Exemples :
yv_shop_payment_gateways(filter) : ajouter une passerelle.yv_shop_shipping_methods(filter) : ajouter une méthode de livraison.yv_shop_product_dto(filter) : enrichir le DTO produit exposé.yv_shop_order_created(action) : déclencher un webhook CRM.yv_shop_email_recipient/yv_shop_email_subject(filters).
Via CSS variables
Toutes les couleurs et dimensions sont exposées. Dans le thème :
:root {
--yv-shop-color-primary: #c07f5a;
--yv-shop-color-bg-soft: #fbf7f2;
--yv-shop-cols-desktop: 3;
--yv-shop-radius: 0;
}
Via surcharge de templates
Copier templates/archive.php vers theme/yv-shop/archive.php. Même logique pour single.php, cart.php, checkout.php, parts/*.php, emails/*.php.
WP-CLI
wp yv-shop import-products ./products.csv
wp yv-shop import-products ./products.csv --dry-run
wp yv-shop diagnose
wp yv-shop cleanup-reservations
CSV attendu : sku,name,slug,status,price,sale_price,stock_qty,manage_stock,short_description,description,categories,image_url
Sécurité
- Panier signé HMAC-SHA256, lié au cookie de session (rotation possible).
- Prix et stock re-validés côté serveur à chaque checkout (réponse 409 si delta).
- Secrets Stripe chiffrés AES-256-GCM avec clé indépendante de AUTH_KEY.
- Webhooks Stripe vérifiés par signature, tolérance 5 min, idempotence via table dédiée.
- Rate limiting par IP sur endpoints mutants (cart/sync, checkout/intent).
- Origin/Referer check sur les endpoints POST.
Roadmap V2
- Produits variables avancés, bundles.
- Coupons avec conditions complexes.
- Multi-devises, multi-langues natif.
- PWA offline, Web Push notifications.
- Dashboard stats temps réel.
Licence
GPL-2.0-or-later. Voir LICENSE.
Support
Issues : https://github.com/agenceyouvanna/youvanna-shop/issues