Cahier des charges technique + Guide Complet (AR/FR) — v1.0 · Juin 2026
Sections
Plateforme E-commerce de Design d'Intérieur
Version
1.0
Date
Juin 2026
Statut
✓ Production
Auteur
Mourad Ghazi
Nom: DARDECO — Plateforme E-commerce de Design d'Intérieur Premium
Slogan: "L'Art de Vivre Chez Vous" — "The Art of Living at Home" — "فن العيش في بيتك"
Fondateur: Mourad Ghazi — mouradghazi002@gmail.com
DARDECO (دار ديكو) est composé de "دار" (maison) et "ديكو" (décoration). La plateforme vend des meubles et objets de design d'intérieur qui marient l'artisanat marocain authentique avec le design scandinave et international contemporain.
| Segment | Description | Zones |
|---|---|---|
| Principale | Couples et familles (30–55 ans), revenus moyens-élevés, urbains | Casablanca, Rabat, Marrakech, Tanger |
| Secondaire | Diaspora marocaine en Europe (France, Belgique, Suisse) | Europe, Canada |
| B2B | Architectes, décorateurs, hôtels et riads de luxe | Maroc & international |
| Technologie | Version | Usage |
|---|---|---|
| React | 18.2.0 | UI principale |
| Tailwind CSS | Latest | Stylage utilitaire |
| React Router DOM | 6.26.0 | Routage client |
| @tanstack/react-query | 5.84.1 | État asynchrone & cache |
| Framer Motion | 11.16.4 | Animations |
| Recharts | 2.15.4 | Graphiques analytiques |
| jspdf | 4.2.1 | Génération factures PDF |
| Shadcn/ui | Latest | Composants UI accessibles |
| Lucide React | 0.475.0 | Icônes |
Inspiré de Case Furniture — design luxe minimaliste centré produit:
| Couleur | Hex | Usage |
|---|---|---|
| Charcoal Black | #1B1B1B | Textes, boutons principaux, header |
| Off-White | #FFFFFA | Fond page principale |
| Accent (terracotta) | #C65D3B | CTA, badges promo, accents |
| Success Green | #27AE60 | Stock disponible, confirmation |
| Warning Orange | #F39C12 | Stock faible, alertes |
Fonts: Cormorant Garamond (titres serif élégants) + Inter (corps de texte)
Post-commande: création Order → email confirmation → génération facture PDF → redirection
Général, SEO, Catalogue, Livraison, Paiement, Facturation, Réseaux sociaux, Newsletter, Automatisation, Polices, Scripts, Régional
7 rôles: super_admin, manager_general, responsable_commercial, gestionnaire_stock, service_client, marketing, comptable. Permissions granulaires par module (view/create/edit/delete).
Champs: name, slug, sku, designer, category (furniture/lighting/storage/accessories/tables-de-chevet/outlet), subcategory, description, price, original_price, images[], lifestyle_image, colors[{name, hex, image_url}], materials[], dimensions{width,depth,height,weight}, stock, is_new, is_featured, is_active, style, sort_order, translations{en,ar}{name,description,designer,subcategory,materials}
RLS: Lecture publique. CRUD admins + users avec permissions catalogue
Champs: name, type (flash_sale/low_stock/segment_discount/bundle), is_active, discount_type (percent/fixed), discount_value, applies_to (all/category/product), category, product_ids[], flash_start, flash_end, stock_threshold, segment (vip/nouveau/dormeur/b2b/all), min_price, priority, description
RLS: Lecture publique. CRUD réservé super_admin
Statuts (13): nouvelle → paiement_verifie → preparation → controle_qualite → emballage → attente_transport → expedition → en_route → livre → cloturee / annulee / sav_ouvert / retour_transit
Champs: order_number, customer_name/email/phone, shipping_address, items[{product_id, product_name, sku, quantity, unit_price, color}], subtotal, shipping_cost, discount, total, payment_method, payment_status, tracking_number, carrier, promo_code, delivery_type
Champs: civility, full_name, email, phone, type (particulier/entreprise), company, ice, city, addresses[], segment, tags[], preferred_style, total_spent, order_count, loyalty_points, loyalty_tier (bronze/argent/or/platine), acquisition_source, notes, is_blacklisted
Champs: product_id, product_name, product_image, product_price, quantity, color, session_id, description
RLS: Accès strictement par created_by_id
Champs: code, type (percent/fixed/free_shipping/gift), value, min_order, max_uses, used_count, expires_at, is_active, description
Champs: product_id, customer_name, customer_email, rating (1–5), title, comment, is_verified, is_approved, helpful_count
Champs: ticket_number, subject, customer_name/email/phone, order_number, category, priority, status, messages[{role, content, author, date}], assigned_to, tags[], resolved_at, satisfaction_score
Champs: full_name, email, role (7 rôles), permissions{catalogue,commandes,clients,promotions,analytique,parametres}{view,create,edit,delete}, is_active, access_code, expires_at, last_login, notes
site_name, logo_url, brand colors, SEO, social_links, shipping_settings{zones,tarifs,seuil_gratuit}, payment_methods{cod,bank_transfer,card}, invoice_settings, newsletter_settings, fonts{heading,body}, announcement_bar, newsletter_popup, etc.
Champs: subject, content, recipient_email, access_token, is_read, expires_at, max_views, view_count, created_by_admin
Newsletter: email, source (popup/footer), is_active. AdminNotification: type, priority, title, message, entity_id, is_read, action_url
Params: order_id, send_email (boolean) → Retour: {invoice_url, email_sent}
Génère la facture PDF et l'envoie par email. Appelée automatiquement post-commande.
Params: order_id → Email de confirmation avec détails commande, remerciements, prochaines étapes
Params: order_id, new_status → Notification au client lors de chaque changement de statut
Params: user_email, user_name → Email de bienvenue nouvel inscrit
Automation sur création/modification de commande → envoi automatique de la facture
Params: order_id → Retour: {invoice_url} — Génère PDF sans envoi
Params: subject, content, recipient_email, expires_at, max_views → Crée email avec token unique d'accès sécurisé
Params: token → Vérifie expiration + nombre de vues, marque comme lu. Sécurité: accès à usage unique
Automation sur création de commande → crée AdminNotification + email/SMS optionnel
Params: code → Retour: {valid: boolean} | Compare avec secret ADMIN_ACCESS_CODE, protection brute-force
Traduit les fiches produits (name, description, designer, subcategory, materials) via InvokeLLM → FR vers EN et AR
Scheduled automation hebdomadaire → rapport CA, commandes, top produits, alertes envoyé par email
| Composant | Usage |
|---|---|
| SamiChat | Widget flottant site public, recommandations produits, proactif par page |
| SamiAdmin | Barre commande ⌘K admin, navigation naturelle, rapports IA |
| SamiWidget | Widget flottant admin, insights opérationnels |
| SamiInsightCard | Cartes insights dans Analytics |
| Entité | Règle |
|---|---|
| Product | Lecture publique. CRUD: super_admin OU permissions.catalogue |
| Order | Lecture/écriture: created_by_id OU super_admin OU permissions.commandes |
| CartItem | Accès strict: created_by_id uniquement |
| Customer | Created_by_id OU super_admin OU permissions.clients |
| SiteSettings | Super_admin uniquement (CRUD) |
| PricingRule | Lecture publique. CRUD: super_admin uniquement |
| PrivateEmail | Super_admin uniquement |