Voici le **fichier de continuité** complet pour Sabou Cash. Copiez-collez son contenu dans un fichier `.txt` ou `.md` que vous garderez. --- ```text ================================================================ SABOU CASH — FICHIER DE CONTINUITÉ ================================================================ Date de création : 2026-10-05 Projet : Boutique en ligne de savons au Sénégal Domaine (prévu) : saboucash.com Hébergement : cPanel (siti7690) ================================================================ ## 🎯 VISION DU PROJET **Sabou Cash** = boutique en ligne de savons au Sénégal. - Nom : **Sabou Cash** ("Sabou" = savon en wolof) - Modèle : **Achat-revente** (achat en gros, revente au détail) - Cible : **Particuliers + Professionnels (B2B)** - Marché : Sénégal (Dakar en priorité) - Objectif : Devenir la référence du savon au Sénégal ================================================================ ## 🏗️ MODÈLE ÉCONOMIQUE ### Type Achat-revente pur (Modèle A) ### Chaîne Fournisseur (grossiste/artisan/importateur) ↓ Nous (Sabou Cash - stock) ↓ Client (particulier / salon / hôtel) ### Cibles **B2C — Particuliers** - Panier moyen : 1 500 - 3 000 F - Fréquence : mensuelle (récurrente) - Volume : 70 % du CA - Canal : Site + WhatsApp + Instagram **B2B — Professionnels** - Clients : salons de coiffure, hôtels, restaurants, spas, entreprises - Panier moyen : 30 000 - 200 000 F - Fréquence : mensuelle/trimestrielle - Volume : 30 % du CA mais 50 % de la marge - Canal : Téléphone + WhatsApp Business + visite directe ================================================================ ## 🗄️ BASE DE DONNÉES — ÉTAT ACTUEL ### Informations - Base : **siti7690_sabou_cash_db** - Hôte : localhost - Utilisateur : siti7690_sabou (à confirmer) - Charset : utf8mb4 / utf8mb4_unicode_ci - Moteur : InnoDB ### ✅ 15 tables créées ``` 1. users - clients (particuliers + pros) 2. categories - catégories de savons 3. brands - marques (Dove, Nivea, artisanales...) 4. products - produits (savons) 5. product_images - images produits 6. product_variants - variantes (parfums, poids) 7. price_tiers - tarifs dégressifs B2B 8. addresses - adresses de livraison 9. cart - paniers 10. orders - commandes 11. order_items - lignes de commande 12. payments - paiements (PayTech) 13. quotes - devis B2B 14. admin_users - administrateurs 15. settings - paramètres boutique ``` ### Tables importantes (schéma résumé) **users** : id, email, phone_number, password, full_name, customer_type (individual/professional), company_name, company_registration, company_tax_id, is_verified, created_at **products** : id, category_id, brand_id, name, slug, short_description, long_description, price, compare_price, cost_price, pro_price, pro_min_quantity, is_pro_only, stock_quantity, sku, volume_liters, unit, is_active, is_featured, view_count, created_at, updated_at **orders** : id, reference (CMD-XXXX), user_id, customer_type, status (pending_payment/paid/preparing/shipped/delivered/cancelled/refunded), subtotal, shipping_cost, total, payment_method, paid_at, shipping_address_json, created_at **price_tiers** : id, product_id (NULL=global), customer_type, min_quantity, discount_percent, fixed_price, min_order_amount **quotes** : id, reference (DEV-XXXX), user_id, status (pending/processing/sent/accepted/rejected/expired), items_json, subtotal, discount, total, valid_until ================================================================ ## 📁 STRUCTURE DES DOSSIERS (à créer) ``` public_html/ ├── config/ │ └── db.php ← ✅ CRÉÉ (code fourni) ├── includes/ │ ├── header.php ← ⏳ À créer │ └── footer.php ← ⏳ À créer ├── assets/ │ ├── css/ │ │ └── style.css ← ⏳ À créer │ ├── js/ │ │ └── main.js ← ⏳ À créer │ └── img/ │ └── (logo, hero, etc.) ├── uploads/ │ ├── products/ ← images produits │ └── categories/ ← images catégories ├── actions/ ← actions serveur │ ├── ajouter_panier.php │ ├── modifier_panier.php │ ├── retirer_panier.php │ ├── valider_commande.php │ ├── payer_paytech.php │ └── paytech_ipn.php ├── admin/ ← back-office │ ├── _auth.php │ ├── _header.php │ ├── _footer.php │ ├── index.php │ ├── login.php │ ├── produits.php │ ├── categories.php │ ├── marques.php │ ├── commandes.php │ ├── clients.php │ ├── devis.php │ └── parametres.php ├── index.php ← accueil boutique ├── catalogue.php ← liste produits ├── produit.php ← fiche produit ├── panier.php ← panier ├── commande.php ← tunnel commande ├── confirmation.php ← confirmation ├── login.php ← connexion client ├── register.php ← inscription client ├── logout.php ├── mon-compte.php ← espace client ├── contact.php ├── cgv.php ├── mentions-legales.php ├── politique-confidentialite.php └── .htaccess ``` ================================================================ ## 🔧 CONFIGURATION — config/db.php ### ✅ Fichier CRÉÉ (code fourni dans le chat) **Contenu principal :** - Connexion MySQLi à siti7690_sabou_cash_db - Fuseau horaire Africa/Dakar + SET time_zone = '+00:00' - Session sécurisée - Helpers : db_one(), db_all(), db_exec() - Helpers HTML : e(), money(), redirect() - CSRF : csrf_token(), csrf_field(), csrf_check() - Auth : check_login(), current_user(), require_login() - Boutique : cart_count(), slugify(), generate_reference() ### ⚠️ À PERSONNALISER dans config/db.php ```php define('DB_USER', 'siti7690_sabou'); // ← user MySQL cPanel define('DB_PASS', 'VOTRE_MOT_DE_PASSE'); // ← mot de passe MySQL define('SITE_URL', 'https://saboucash.com'); // ← URL réelle define('SITE_EMAIL', 'contact@saboucash.com'); define('SITE_PHONE', '+221 XX XXX XX XX'); ``` ### Constantes importantes ```php SITE_NAME = 'Sabou Cash' SITE_URL = 'https://saboucash.com' ENV = 'production' // ou 'development' DB_NAME = 'siti7690_sabou_cash_db' ``` ================================================================ ## 🎨 CHARTE GRAPHIQUE ### Couleurs (reprises de l'ancien projet) ```css --green: #08766b; (principal) --green-dark: #065c53; --green-light: #d9f2ee; --bg: #f3f6f5; (fond) --text: #18362e; --muted: #6b7d78; --white: #fff; --border: #e2ebe8; --red: #c0392b; --amber: #b7791f; --blue: #0369a1; ``` ### Typographie ``` Police système : -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif ``` ### Style - Radius : 18px (cartes), 10px (boutons) - Ombres douces - Design responsive (mobile-first) - Émojis dans les titres (🧼 🛒 ✨) ================================================================ ## 📅 PLAN DE CONSTRUCTION (dans l'ordre) ### ✅ FAIT 1. ✅ Base de données créée (15 tables) 2. ✅ config/db.php créé (code fourni) ### ⏳ ÉTAPE SUIVANTE — À FAIRE 3. ⏳ Créer l'arborescence des dossiers 4. ⏳ includes/header.php 5. ⏳ includes/footer.php 6. ⏳ index.php (accueil boutique savon) 7. ⏳ catalogue.php (liste produits + filtres) 8. ⏳ produit.php (fiche produit) 9. ⏳ login.php + register.php 10. ⏳ panier.php + actions panier 11. ⏳ commande.php + confirmation.php 12. ⏳ Paiement PayTech (actions/payer_paytech.php + paytech_ipn.php) 13. ⏳ mon-compte.php 14. ⏳ admin/ (back-office) 15. ⏳ Pages légales (CGV, mentions, confidentialité) 16. ⏳ Contenu : 10-20 produits avec photos ### 🎯 ORDRE DE DÉMARRAGE APRÈS config/db.php ``` 1. Créer les dossiers (config/, includes/, assets/, uploads/, actions/, admin/) 2. Tester la connexion (fichier test-db.php temporaire) 3. includes/header.php + includes/footer.php 4. index.php (accueil) 5. catalogue.php 6. produit.php 7. login.php + register.php 8. panier.php + actions 9. commande.php 10. Paiement PayTech 11. admin/ 12. Contenu ``` ================================================================ ## 💳 PAIEMENT — RÉUTILISATION PAYTECH ### Ce qu'on garde de l'ancien projet Peinture-Cash ⚠️ IMPORTANT : on ne copie PAS l'ancien code, on le RÉÉCRIT proprement. **PayTech — Configuration :** - Endpoint : https://paytech.sn/api/payment/request-payment - Headers : API_KEY + API_SECRET (à récupérer du compte PayTech) - Payload minimal : ```php [ 'item_name' => 'Commande Sabou Cash', 'item_price' => $total, 'ref_command' => $reference, 'command_name' => 'Commande Sabou Cash #' . $ref, 'env' => 'prod', // ou 'test' 'currency' => 'XOF', 'success_url' => SITE_URL . '/confirmation.php?ref=' . $reference, 'cancel_url' => SITE_URL . '/commande.php?cancelled=1', 'ipn_url' => SITE_URL . '/actions/paytech_ipn.php', ] ``` - ⚠️ **NE PAS mettre** `custom_field` ni `target_payment` (refusés en prod) **Références :** - Commande : `CMD-XXXXXXXXXX` - Paiement : `PAY-XXXXXXXXXX` - Devis : `DEV-XXXXXXXXXX` **IPN — PayTech appelle `paytech_ipn.php` :** ``` Reçoit POST → cherche payments.reference → si trouvé et pending → UPDATE payments SET status='success' → UPDATE orders SET status='paid', paid_at=NOW() → répond 'OK' ``` ================================================================ ## 🔐 SÉCURITÉ ### Règles à respecter 1. **Toujours** utiliser `declare(strict_types=1)` 2. **Toujours** utiliser `require_once __DIR__ . '/config/db.php'` 3. **Toujours** échapper avec `e()` avant affichage HTML 4. **Toujours** vérifier CSRF sur les formulaires POST 5. **Toujours** utiliser des requêtes préparées (`db_one`, `db_all`, `db_exec`) 6. **Jamais** de requête SQL directe avec `$conn->query()` dans les pages 7. **Jamais** de `echo $_GET['x']` ou `echo $_POST['x']` sans `e()` 8. **Jamais** de mot de passe en clair (utiliser `password_hash` / `password_verify`) ### Fichiers sensibles à protéger Dans `.htaccess` racine : ```apache Require all denied ``` ================================================================ ## 📞 COMMENT REPRENDRE SUR UN NOUVEAU CHAT **Message d'ouverture suggéré :** > Bonjour, je continue le projet Sabou Cash (boutique de savons). > Voici le fichier de continuité : [coller le contenu] > > Ma question / tâche : [décrire] **Fichiers à fournir selon la tâche :** - Pour `includes/` → dire simplement « où on en est » - Pour `index.php` → dire « génère index.php boutique savon » - Pour un bug → fournir le fichier concerné + capture d'écran **Commandes utiles cPanel :** ```bash # Lister les fichiers ls -la ~/public_html/ # Chercher un fichier find ~/public_html/ -name "*.php" | grep -i produit # Vérifier une fonction grep -rn "function db_one" ~/public_html/ ``` **Requêtes SQL utiles :** ```sql -- Voir les produits SELECT id, name, price, stock_quantity FROM products LIMIT 10; -- Voir les clients SELECT id, full_name, phone_number, customer_type FROM users LIMIT 10; -- Voir les commandes SELECT id, reference, status, total FROM orders ORDER BY id DESC LIMIT 10; -- Voir les catégories SELECT id, name, slug FROM categories; ``` ================================================================ ## 📋 CATÉGORIES DE SAVONS PRÉVUES ### Catégories principales (à créer en base) 1. 🧼 **Savons artisanaux** (karité, coco, miel, argile, baobab) 2. 🌿 **Savons naturels** (bio, sans parfum, hypoallergénique) 3. 🧴 **Grandes marques** (Dove, Nivea, Palmolive, Le Chat) 4. 💧 **Savons liquides** (gel douche, savon mains, savon vaisselle) 5. 👶 **Bébé & enfant** (savon bébé, savon doux) 6. 🎁 **Coffrets cadeaux** (découverte, mariage, entreprise) ### Marques prévues (à créer en base) **Locales / artisanales :** à définir avec les fournisseurs **Internationales :** Dove, Nivea, Palmolive, Le Chat, Sunlight ================================================================ ## 🎯 PROCHAINES ÉTAPES IMMÉDIATES ### Étape 1 — Créer les dossiers Dans cPanel → Gestionnaire de fichiers → public_html/ : - config/ ✅ (déjà créé si test OK) - includes/ - assets/css/, assets/js/, assets/img/ - uploads/products/, uploads/categories/ - actions/ - admin/ ### Étape 2 — includes/header.php **Contenu :** - Doctype HTML - Balises meta - Liens CSS - Header navigation (logo, liens Boutique/Contact, panier, connexion) - Ouverture
### Étape 3 — includes/footer.php **Contenu :** - Footer 4 colonnes (À propos, Boutique, Compte, Infos) - Copyright - Scripts JS - Fermeture ### Étape 4 — index.php **Contenu :** - require config/db.php - require includes/header.php - Hero section (titre, sous-titre, CTA) - 4 avantages (livraison, qualité, paiement, conseil) - Catégories (6 cards) - Produits phares (8 produits) - Nouveautés (4 produits) - CTA contact - require includes/footer.php **Design :** - Reprendre le style de l'ancien index (couleurs, cartes, ombres) - Adapter les textes pour les savons - Émoji 🧼 partout où pertinent ================================================================ ## ✅ CHECKLIST FINALE **État actuel :** - [x] Base de données créée (15 tables) - [x] Fichier config/db.php créé (code fourni) - [ ] Arborescence créée - [ ] includes/header.php + footer.php - [ ] index.php - [ ] catalogue.php - [ ] produit.php - [ ] login.php + register.php - [ ] panier.php + actions - [ ] commande.php - [ ] Paiement PayTech - [ ] admin/ - [ ] Contenu (produits + images) - [ ] Pages légales **Objectif à terme :** - [ ] Boutique fonctionnelle - [ ] 20 produits minimum - [ ] PayTech opérationnel - [ ] Communication WhatsApp + Instagram - [ ] Premiers clients ================================================================ FIN DU FICHIER DE CONTINUITÉ ================================================================ ``` --- ## 📤 Comment utiliser ce fichier 1. **Copiez tout** le contenu entre les balises ```text 2. **Enregistrez-le** dans un fichier local, par exemple : - `sabou-cash-continuite.txt` - `sabou-cash-etat-2026-10-05.md` 3. **Sur un nouveau chat**, collez-le en entier + votre question --- ## 🎯 Ce qui est couvert ✅ Vision du projet ✅ Modèle économique (A + B2C/B2B) ✅ Base de données (15 tables + schéma résumé) ✅ Structure des dossiers ✅ Configuration `config/db.php` ✅ Charte graphique (couleurs, typo) ✅ Plan de construction étape par étape ✅ Réutilisation PayTech ✅ Règles de sécurité ✅ Comment reprendre sur un nouveau chat ✅ Catégories et marques prévues ✅ Prochaines étapes détaillées ✅ Checklist finale **Vous pouvez reprendre sur n'importe quel chat avec ce document.** 🎯 --- ## 📤 Dites-moi 👉 **Voulez-vous que je continue maintenant avec :** - 🅰️ **`includes/header.php` + `includes/footer.php`** → pour structurer toutes les pages - 🅱️ **`index.php` complet** (accueil boutique savon) → la vitrine - 🅲️ **Les deux d'abord puis continuer** → approche complète - 🅳️ **D'abord tester la connexion** (`test-db.php`) → vérifier que `config/db.php` fonctionne **On continue ?** 🚀