1. Vue d'ensemble
Codinfy est structuré autour d'un backend Laravel 11, d'un wizard d'installation web, d'un système de licences sécurisé, de dashboards client/admin, d'une documentation HTML publiable et d'une logique de déploiement pensée pour les contraintes d'un hébergement mutualisé cPanel.
Frontend public
Accueil, boutique, blog, pages légales, pages agence, documentation et navigation commerciale.
Espace client
Licences, téléchargements, factures, support, wallet, points fidélité, badges, affiliation, profil et notifications.
Administration
Produits, licences, clients, paiements, support, CMS, AI/Awa, CRM, marketing, sécurité, notifications et paramètres globaux.
2. Prérequis serveur
| Élément | Requis | Notes mutualisé |
| PHP | 8.2 minimum, 8.3 recommandé | Configurer la version PHP via cPanel. |
| Extensions | bcmath, ctype, curl, fileinfo, json, mbstring, openssl, pdo, pdo_mysql, tokenizer, xml | Le wizard vérifie ces extensions à l'écran. |
| Base de données | MySQL ou MariaDB compatible | Créer une base et un utilisateur depuis cPanel. |
| Écriture | .env, storage/, bootstrap/cache | Indispensable pour installation, cache, logs et génération de clés. |
| Modules Apache | mod_rewrite, mod_headers, mod_expires | o2switch les fournit généralement par défaut. |
Le wizard affiche un statut global prêt ou non prêt avant de vous laisser passer à l'étape suivante.
3. Installation pas à pas
Étape 1 · Ouvrir le wizard
Accédez à https://votredomaine.com/install. La page System Check / Requirements vérifie la version PHP, les extensions, les permissions, le moteur base de données, les modules serveur et l'écriture sur .env, storage, cache et logs.
Étape 2 · Configuration principale
Renseignez :
- SQL host name
- SQL username
- SQL password
- SQL database name
- Site URL
Exemples d'URL acceptées : https://siteurl.com, https://www.siteurl.com, https://subdomain.siteurl.com, https://siteurl.com/subfolder.
Étape 3 · Informations du site et administrateur
Renseignez :
- Site name
- Site title
- Site E-mail
- Admin username
- Admin password
Le wizard affiche le message suivant avant exécution : Une fois les informations saisies, veuillez cliquer sur le bouton Installer et patienter quelques instants ; le processus d'installation peut prendre jusqu'à 5 minutes.
Ce que fait l'installation
- Écriture de la configuration dans
.env
- Connexion MySQL et exécution des migrations
- Seed des rôles, permissions, produits et contenus initiaux
- Création du super administrateur
- Génération des clés RSA de licences
- Création du marqueur
APP_INSTALLED=true
4. Déploiement pas à pas
Préparer le package
En local ou CI :
composer install --no-dev --optimize-autoloader
php artisan config:clear
php artisan route:clear
php artisan view:clear
Uploader sur cPanel
Envoyez le contenu du projet dans le répertoire de votre choix, par exemple /home/USERNAME/codinfy-app. Le document root public doit pointer vers le dossier backend/public ou un sous-dossier qui réplique son contenu selon votre organisation cPanel.
Configurer le domaine
Dans cPanel, rattachez le domaine ou sous-domaine à l'application. Si vous ne pouvez pas changer directement le document root, utilisez un sous-dossier public et adaptez APP_URL pendant l'installation.
Lancer l'installation
Une fois les fichiers en place, ouvrez /install depuis le navigateur et laissez le wizard finaliser la base, les réglages et le compte admin.
5. Configuration initiale
Après installation, connectez-vous à l'administration puis configurez en priorité :
- Nom du site, titre, adresse email officielle
- Devises, langues et géolocalisation
- Packs de traduction JSON (création, édition et export) depuis Admin > Paramètres
- Feature flags : wallet, affiliation, Awa, PWA, reviews, CRM
- Programme de parrainage, lien d'inscription et paramétrage des commissions affiliation
- Clés API : paiements, SMTP, OpenAI, analytics, reCAPTCHA
- Lancer le diagnostic API et l email SMTP de test depuis l administration
- Politique de sécurité admin, 2FA, restrictions IP si nécessaire
6. Configuration base de données
Depuis cPanel :
- Créez une base MySQL dédiée, par exemple
cpaneluser_codinfy
- Créez un utilisateur MySQL dédié
- Affectez tous les privilèges à cet utilisateur
- Reportez les quatre valeurs dans la page 2 du wizard
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=cpaneluser_codinfy
DB_USERNAME=cpaneluser_codinfy
DB_PASSWORD=mot_de_passe_mysql
Le test de connexion est effectué avant de passer à l'étape 3.
7. Configuration URL domaine / sous-domaine / sous-dossier
Domaine principal
Exemple : https://codinfy.com. Configurez le document root sur le dossier public de l'application.
Sous-domaine
Exemple : https://app.codinfy.com. Dans cPanel, créez le sous-domaine et pointez-le vers le dossier public.
Sous-dossier
Exemple : https://siteurl.com/subfolder. Renseignez exactement cette URL dans le wizard pour générer les liens et assets correctement.
En sous-dossier, vérifiez aussi les règles rewrite et le bon calcul des URLs générées par Laravel via APP_URL.
8. Configuration cPanel
Document root
Le meilleur scénario consiste à faire pointer le domaine directement vers backend/public. Si votre organisation ne le permet pas, répliquez proprement le contenu public dans le dossier assigné par cPanel.
Version PHP
Depuis Select PHP Version ou équivalent, activez PHP 8.3 et les extensions vérifiées par le wizard.
SSL
Activez HTTPS via AutoSSL ou certificat Let's Encrypt. Codinfy suppose un trafic en HTTPS pour les cookies, les sessions et les callbacks paiements.
Gestionnaire de fichiers
Vérifiez les permissions, l'arborescence et l'écriture du .env, de storage et de bootstrap/cache.
9. Structure des dossiers
backend/
app/
bootstrap/
config/
database/
public/
assets/
docs/
resources/
views/
routes/
storage/
frontend/ (optionnel pour export statique / itérations UI)
docs/
README
storage/keys contient les clés RSA de licences. public/docs/index.html correspond à la documentation officielle publiée.
10. Cron jobs
Sur mutualisé, configurez un seul cron cPanel :
* * * * * /usr/local/bin/php /home/USERNAME/codinfy-app/backend/artisan schedule:run >> /home/USERNAME/codinfy-app/backend/storage/logs/scheduler.log 2>&1
Le scheduler lance ensuite les commandes prévues :
codinfy:compute-crm-scores
codinfy:compute-cohorts
codinfy:send-support-reminders
codinfy:process-churn-alerts
codinfy:cleanup-license-checks
codinfy:sync-pending-invoices
codinfy:send-invoice-reminders
codinfy:monitor-support-sla
codinfy:monitor-payment-disputes
codinfy:monitor-privacy-requests
codinfy:retry-failed-webhooks
codinfy:detect-license-anomalies
codinfy:process-affiliate-payouts
codinfy:send-update-notifications
codinfy:generate-monthly-reports
11. Permissions
| Chemin | Besoin | Commentaire |
.env | Écriture | Obligatoire pendant l'installation et les mises à jour de configuration. |
storage/ | Écriture | Logs, factures, caches, sessions, clés et exports. |
bootstrap/cache | Écriture | Cache de configuration et de routes. |
public/docs | Lecture | Publication statique de la documentation officielle. |
Évitez les permissions trop permissives. Préférez une configuration propre adaptée à votre hébergeur plutôt que des 777.
12. Emails / SMTP
Codinfy prend en charge l'envoi transactionnel via SMTP configurable. Paramètres à renseigner dans l'administration ou dans l'environnement initial :
MAIL_MAILER=smtp
MAIL_HOST=smtp.votreserveur.com
MAIL_PORT=587
MAIL_USERNAME=utilisateur
MAIL_PASSWORD=motdepasse
MAIL_FROM_ADDRESS=noreply@codinfy.com
MAIL_FROM_NAME=Codinfy
Templates attendus : bienvenue, vérification email, confirmation achat, support, sécurité, mises à jour, renouvellement support, affiliation et rapports mensuels.
13. Paiements et clés API
Les clés ne doivent jamais être hardcodées. Elles sont gérées depuis Admin > Paramètres > APIs et stockées dans la configuration plateforme.
Passerelles natives
- CinetPay
- TouchPay / InTouch
- KKiaPay
Les webhooks entrants doivent être autorisés côté hébergeur et vérifiés côté application. Préparez les URL de callback avant activation. TouchPay direct requiert aussi le base URL InTouch, le merchant code, les paramètres agent et les identifiants Basic Auth.
Le checkout supporte aussi les coupons marketing, la validation immédiate via wallet si le solde couvre toute la commande, et la conversion des gift cards vers le wallet client.
14. Exploitation admin
Le back-office Codinfy couvre désormais les opérations courantes de production : catalogue, licences, clients, paiements, support, CMS, Awa, CRM, marketing, payouts affiliation, notifications sortantes, sécurité et gestion des packs de langues JSON. Côté client, le portail expose aussi le suivi wallet, la progression fidélité, l'édition du profil et l'affiliation avec commissions.
Playbook administration
Le guide admin-playbook.html détaille les workflows des modules Produits, Licences, Clients, Paiements, Support, CMS, CRM, AI/Awa, Marketing et Sécurité.
Runbook opérationnel
Le guide operations-runbook.html centralise les routines quotidiennes, la réconciliation des paiements, la gestion d'incident support, les alertes sécurité et les commandes Artisan utiles.
Publiez ces deux guides avec l'index principal pour donner une base d'exploitation immédiate à vos équipes support, produit et administration.
15. Sécurité
Authentification
Sessions web + API tokens Sanctum, rôles/permissions, challenge TOTP au login pour comptes activés et contrôle admin renforcé.
Acces admin IP
Restriction IP/CIDR optionnelle pour /admin, configurable depuis le module Sécurité avec audit des blocages.
2FA admin
Politique 2FA administrateur configurable avec mode bootstrap initial, puis enforcement strict dès qu'au moins un admin est enrôlé.
Licences
Validation entrante HMAC-SHA256, réponses JWT RS256, anti-replay 5 minutes, rate limiting, grace period 72h et blacklist.
Infrastructure
HTTPS obligatoire, logs, rotation des accès, séparation des fichiers publics et stockage sensible dans storage.
Conservez une copie de sauvegarde des clés RSA dans un emplacement sûr. Elles sont critiques pour la validation des licences clientes.
16. Mise à jour de la plateforme
Avant mise à jour
- Sauvegarder la base de données
- Sauvegarder
.env et storage/keys
- Noter les personnalisations éventuelles
Procédure recommandée
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:clear
php artisan route:clear
php artisan view:clear
Après mise à jour
Vérifiez l'administration, le checkout, le wizard désactivé, les licences API, les cron jobs et la documentation publiée.
17. Résolution des problèmes fréquents
| Problème | Cause fréquente | Résolution |
| Le wizard reste bloqué en étape 1 |
Permissions ou extension PHP manquante |
Corriger les permissions .env, storage, bootstrap/cache et activer l'extension manquante dans cPanel. |
| Connexion MySQL refusée |
Nom de base/utilisateur cPanel incorrect |
Vérifier le préfixe cPanel exact et réattribuer les privilèges MySQL. |
| Erreur 500 après installation |
Cache corrompu ou document root incorrect |
Vérifier le document root public et nettoyer les caches Laravel. |
| Les emails ne partent pas |
SMTP invalide ou port bloqué |
Tester le couple hôte/port/login et privilégier TLS 587. |
| Les licences ne renvoient pas de JWT |
Clés RSA absentes ou non lisibles |
Vérifier storage/keys/license_private.pem et storage/keys/license_public.pem. |
| Le cron ne déclenche rien |
Commande cPanel erronée |
Contrôler le chemin absolu de PHP et de artisan, puis journaliser la sortie. |