Commencer
Installez FleetHub sur cPanel, Hostinger ou votre propre VPS en moins de 10 minutes.
Utilisateurs et rôles
5 rôles de flotte avec autorisations Spatie : administrateur, gestionnaire de flotte, chef de service, comptable, chauffeur.
Caractéristiques du produit
Véhicules, chauffeurs, réquisitions, transferts, journaux de carburant, TCO, conformité, score de santé de la flotte, et bien plus encore.
Personnalisation
Champs personnalisés par catégorie de véhicule, marque, langues et thèmes.
Configuration Hostinger
Déployez étape par étape sur le niveau d'hébergement partagé unique le moins cher.
Configuration cPanel
Déploiement étape par étape sur un hébergement partagé cPanel standard – aucun terminal requis.
Sécurité et QR
HTTPS, webhooks signés HMAC, journal d'audit et analyse rapide QR via caméra.
Rapports et exportation
7 rapports de flotte avec export Excel + PDF et filtres de date.
Alertes par e-mail
Conformité, maintenance, demandes en retard et rappels de permis de conduire.
Questions fréquemment posées
Puis-je exécuter FleetHub sur le forfait Hostinger Single le moins cher ?
Oui — FleetHub est entièrement compatible avec Hostinger Single (~ 2,99 $/mois). Single inclut PHP 8.3, MySQL, les tâches Cron natives et SSL gratuit – tout ce dont FleetHub a besoin. Pas de SSH, pas de Composer, pas de ligne de commande requise. Consultez la section Installation de Hostinger pour le guide étape par étape.
Ai-je besoin de compétences techniques pour l’installer ?
Non. Le installateur Web gère tout : la vérification des exigences, la configuration de la base de données, les migrations et la création du compte administrateur. Téléchargez simplement les fichiers, visitez /install dans votre navigateur et suivez l'assistant.
Comment fonctionnent les emails programmés (alertes de conformité/maintenance) ?
FleetHub utilise le planificateur de Laravel. Vous configurez uniquement une tâche cron qui s'exécute toutes les minutes, et Laravel répartit en interne chaque tâche à l'heure correcte (quotidiennement à 08h00, mensuellement, etc.). Pour cPanel, configurez-le dans Avancé → Cron Jobs. Pour Hostinger, utilisez hPanel → Advanced → Cron Jobs. Voir Configuration de cPanel → Étape 7 ou Configuration de Hostinger → Étape 5. Si votre hôte n'a pas de cron, utilisez l'URL Cron intégrée à l'application avec le service gratuit cron-job.org.
Quelles méthodes d’amortissement sont prises en charge ?
Trois méthodes : Ligne droite, Solde dégressif et Unités de production (basées sur les kilomètres du compteur kilométrique). Les valeurs des véhicules alimentent le tableau de bord TCO et sont automatiquement actualisées mensuellement.
Le scanner QR fonctionne-t-il sur les téléphones mobiles ?
Oui, les conducteurs et les gestionnaires peuvent scanner les codes QR des véhicules avec la caméra du navigateur via html5-qrcode. Les actions d'analyse rapide (journal de carburant, compteur kilométrique, rapport d'incident) nécessitent une connexion. La seule exigence est HTTPS.
Puis-je ajouter mes propres champs sans coder ?
Oui. Admin → Champs personnalisés vous permet d'ajouter des attributs illimités (texte, numéro, date, sélection, zone de texte, fichier, case à cocher), de les étendre aux catégories de véhicules, de les marquer comme obligatoires et de les réorganiser par glisser-déposer.
Combien de langues FleetHub prend-il en charge ?
11 paramètres régionaux prêts à l'emploi : anglais, vietnamien, espagnol, français, allemand, chinois, japonais, portugais (BR), russe, arabe (avec prise en charge complète de RTL) et hindi. Les administrateurs gèrent les traductions depuis Administration → Traductions.
Puis-je installer FleetHub sur un hébergement partagé cPanel ?
Oui – FleetHub fonctionne sur n'importe quel plan d'hébergement partagé standard cPanel avec PHP 8.2+, MySQL et Cron Jobs. Aucun Composer ou Node.js sur le serveur n'est requis - le package est livré pré-construit. Consultez la section cPanel Setup.
Comment puis-je renommer FleetHub (page de connexion, titre de la page et couleurs) ?
FleetHub peut être entièrement personnalisé depuis le panneau d'administration — sans modifier le code ni exécuter npm run build. Le logo de connexion, le pied de page, le badge et le titre de l'onglet du navigateur suivent Paramètres → Marque → Nom de l'application. L'onglet Apparence permet de personnaliser les couleurs de l'application en mode clair et sombre.
auth.login_subtitle par langue → personnalisez les couleurs dans Paramètres → Apparence.
Référence rapide :
| Élément | Exemple | Comment modifier |
|---|---|---|
| Logo et nom | Votre application de flotte | Paramètres → Marque → Nom de l'application |
| Sous-titre de connexion | Saisissez vos identifiants pour accéder à FleetHub | Administration → Traductions → auth.login_subtitle |
| Copyright du pied de page | © 2026 Votre entreprise | Paramètres → Marque → Nom de l'application |
| Titre de l'onglet du navigateur | NomApp | Paramètres → Marque → Nom de l'application |
| Couleurs de l'application | Palette personnalisée | Paramètres → Apparence |
1. Logo et nom : Connectez-vous en tant qu'administrateur → Paramètres → Marque → mettez à jour Nom de l'application (et téléchargez un logo si besoin) → Enregistrer.
2. Sous-titre de connexion : Modifiez auth.login_subtitle dans Administration → Traductions pour chaque langue, ou éditez lang/{locale}/auth.php directement.
3. Couleurs de l'application : Paramètres → Apparence — configurez les couleurs de marque, d'accent, de statut et de texte séparément pour les modes clair et sombre. Cliquez sur Enregistrer l'apparence pour appliquer à toute l'application.
Aperçu
FleetHub est un système de gestion d'actifs de flotte d'entreprise pour les véhicules internes (50–200 véhicules). Construit avec Laravel 11, Vue 3 et Tailwind CSS — il couvre véhicules, conducteurs, réquisitions, remises avec carte de dommages, journaux carburant, dépenses, analyse TCO, suivi de conformité et score de santé de flotte. Non conçu pour taxi ou location de voitures.
Analyse rapide QR
Scannez n'importe quel code QR de véhicule pour enregistrer le carburant, mettre à jour le compteur kilométrique ou signaler des incidents - le mobile avant tout pour les conducteurs.
Tableau de bord du coût total de possession
Coût total de possession par véhicule et pour l'ensemble de la flotte : achat, carburant, entretien, assurance, etc.
Remise du véhicule
Remises sortantes/entrantes avec mappeur de dommages 2D, liste de contrôle, photos, signature et rapport PDF.
Score de santé de la flotte
Score quotidien avec panne : maintenance en retard, conformité expirée, anomalies de carburant.
Suivi de la conformité
Assurances, immatriculations, taxe de circulation, permis, permis de conduire — alertes au 30/14/7/1 jours.
Rapports de flotte
7 rapports intégrés avec graphiques, exportation Excel et PDF.
Exigences du serveur
- PHP 8.2 ou supérieur (8.3 recommandé)
- MySQL 5.7+ ou MariaDB 10.3+
- Composer 2.x (pour le développement local uniquement — non requis sur l'hébergement mutualisé)
- Node.js 18+ et npm 9+ (pour les versions frontend locales uniquement)
- Serveur Web : Apache ou Nginx
Extensions PHP requises
- OpenSSL, PDO, PDO_MySQL, Mbstring, Tokenizer, XML, Ctype, JSON, GD, Fileinfo
Espace disque
~ 200 Mo minimum. Prévoyez un espace supplémentaire pour les photos du véhicule, les reçus de carburant, les images de remise et les documents de conformité.
Installation
Option A — Programme d'installation Web (recommandé)
- Téléchargez les fichiers du projet sur votre serveur Web.
- Pointez la racine de votre document de domaine sur
public/. - Définir les autorisations :
storage/etbootstrap/cache/doivent être accessibles en écriture (chmod 775). - Copiez
.env.exampledans.envet définissezAPP_KEY(exécutezphp artisan key:generatesi vous avez SSH/Terminal, ou consultez cPanel Setup → Étape 5). - Visitez
https://yourdomain.com/installdans votre navigateur. - Suivez l'assistant — Exigences → Base de données → Migrer → Compte administrateur → Terminé. Cochez Inclure les données de démonstration pour charger un exemple de flotte avec des comptes de démonstration (voir Utilisateurs et rôles).
Option B — Installation CLI
# 1. Installer les dépendances
composer install --no-dev --optimize-autoloader
npm install
npm run build
# 2. Configurer l'environnement
cp .env.example .env
php artisan key:generate
# 3. Modifiez .env pour définir les informations d'identification de la base de données
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
# 4. Créez des tables de base de données et générez des données initiales
php artisan migrate --seed
# 5. Créez un lien symbolique de stockage pour les téléchargements
php artisan storage:link
# 6. Configuration du cache pour la production
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 7. Marquer comme installé
echo "Installed" > storage/installed.lock
public/. Pour Apache, le .htaccess inclus gère la réécriture d'URL. Pour Nginx, consultez le Guide de déploiement de Laravel.
Assistant Étape 2 — Configuration de la base de données
Lorsque l'assistant atteint l'étape 2, entrez les détails de connexion MySQL pour la base de données que vous avez créée dans votre panneau d'hébergement.
| Champ | Par défaut / Exemple | Remarques |
|---|---|---|
| Host | 127.0.0.1 | Fonctionne sur 99% des hôtes partagés. Conservez cette valeur par défaut, sauf si votre hébergement fournit un nom d'hôte MySQL personnalisé. |
| Port | 3306 | Port MySQL standard. Ne changez que si votre fournisseur utilise un port non standard. |
| Nom de la base de données | uXXXXXX_fleethub | Le nom complet affiché dans votre panneau d'hébergement, y compris tout préfixe. |
| Nom d'utilisateur | uXXXXXX_fleethub | Utilisateur MySQL avec des autorisations sur la base de données ci-dessus. N'utilisez pas root sur un hébergement mutualisé. |
| Mot de passe | (votre mot de passe DB) | Le mot de passe que vous avez défini lors de la création de l'utilisateur MySQL. |
Où trouver ces informations d'identification en hébergeant le panneau
- Hostinger: hPanel → Bases de données → Gestion → cliquez sur votre base de données.
- cPanel: cPanel → Bases de données MySQL. La liste de la base de données affiche les noms ; les utilisateurs sont répertoriés ci-dessous.
- Plesk: Plesk → Bases de données → cliquez sur le nom de la base de données.
- DirectAdmin: DirectAdmin → Gestion MySQL → cliquez sur la base de données.
- Base de données externe/gérée: AWS RDS, DigitalOcean Managed Database, etc. Utilisez les informations d'identification de votre console cloud.
Erreurs courantes et comment les corriger
| Message d'erreur | Causer et réparer |
|---|---|
SQLSTATE[HY000] [1045] Access denied | Nom d'utilisateur ou mot de passe incorrect, ou l'utilisateur n'a pas accès à cette base de données. |
SQLSTATE[HY000] [1049] Unknown database | Le nom de la base de données est erroné ou vous n'avez pas encore créé la base de données. |
SQLSTATE[HY000] [2002] Connection refused | Le serveur MySQL n'est pas accessible. Essayez localhost au lieu de 127.0.0.1 ou vice versa. |
SQLSTATE[42S02] Base table not found: sessions | Définissez SESSION_DRIVER=file et CACHE_STORE=file dans .env avant la migration. |
could not find driver | L'extension PHP pdo_mysql est manquante. Activez-le dans votre panneau d'hébergement. |
127.0.0.1 et 3306 — laissez-les tels quels sur l'hébergement partagé.
Localhost (développement local)
Guide rapide pour exécuter FleetHub sur votre ordinateur à des fins de test ou de développement avant le déploiement en production. Choisissez l'environnement qui correspond à votre système d'exploitation.
Option 1 — Laravel Herd (recommandé, macOS et Windows)
Laravel Herd est l'environnement local officiel de l'équipe Laravel — gratuit, natif, sans Docker. Regroupe PHP 8.2/8.3/8.4, Nginx et (dans Herd Pro) MySQL/Redis.
- Téléchargez et installez Laravel Herd depuis herd.laravel.com.
- Placez le dossier du projet FleetHub dans
~/Herd/(macOS) ou%USERPROFILE%\Herd\(Windows). Herd crée automatiquement un domaine.test– par ex.http://fleethub.test. - Ouvrez Herd → Sites et confirmez que la version de PHP est 8.2 ou 8.3. Cliquez avec le bouton droit sur le site → Secure pour activer HTTPS (nécessaire pour le scanner QR).
- Créez une base de données MySQL. Avec Herd Pro, utilisez Services → MySQL → Ouvrir dans TablePlus. Sinon, installez MySQL Community ou utilisez SQLite (
DB_CONNECTION=sqlite,touch database/database.sqlite). - Copiez
.env.examplevers.env, remplissez les informations d'identification de la base de données, puis exécutezphp artisan key:generateà partir de la racine du projet. - Ouvrez
http://fleethub.test/installdans votre navigateur et suivez l'assistant d'installation.
Option 2 – XAMPP (Windows, macOS, Linux)
XAMPP regroupe Apache, MySQL/MariaDB et PHP. Gratuit et multiplateforme. Assurez-vous de choisir une version avec PHP 8.2 ou plus récent.
- Téléchargez XAMPP 8.2+ depuis apachefriends.org et installez-le.
- Copiez le projet FleetHub dans
C:\xampp\htdocs\FleetHub\(Windows) ou/Applications/XAMPP/htdocs/FleetHub/(macOS). - Ouvrez Panneau de configuration XAMPP et démarrez Apache et MySQL. Si les ports sont occupés, utilisez Config → service.conf pour basculer Apache sur 8080.
- Allez dans
http://localhost/phpmyadmin→ New → créez une base de données nomméefleethubavec le classement utf8mb4. - Dans le dossier du projet : copiez
.env.examplevers.env, définissezDB_DATABASE=fleethub,DB_USERNAME=root, laissezDB_PASSWORDvide (par défaut XAMPP). Exécutezphp artisan key:generate. - Visitez
http://localhost/FleetHub/public/installpour exécuter l'assistant d'installation.
/public/ : créez un hôte virtuel en C:\xampp\apache\conf\extra\httpd-vhosts.conf pointant DocumentRoot vers le dossier public/ du projet, puis ajoutez 127.0.0.1 fleethub.local à votre fichier hosts.
Option 3 — Laragon (Windows)
Laragon est une pile Windows portable conçue pour Laravel : des hôtes virtuels automatiques, de jolies URL, MySQL/MariaDB et HeidiSQL fourni.
- Téléchargez Laragon Full depuis laragon.org et installez-le.
- Dans Laragon : Menu → PHP → Version — passez à PHP 8.2 ou 8.3.
- Copiez le projet FleetHub dans
C:\laragon\www\FleetHub\. - Cliquez sur Tout démarrer. Laragon crée automatiquement le vhost :
http://fleethub.test(pointant vers le dossierpublic/). - Ouvrez HeidiSQL (fourni) → créez une base de données
fleethub. Informations d'identification par défaut : utilisateurroot, mot de passe vide. - Modifiez
.envavec les informations d'identification de la base de données, exécutezphp artisan key:generate, puis visitezhttp://fleethub.test/install.
Option 4 — Serveur PHP intégré (aucun serveur Web requis)
L'option la plus simple : Laravel est livré avec artisan serve, qui démarre un serveur PHP de développement. Aucun Apache ou Nginx requis. Idéal pour des tests rapides.
# Installer les dépendances et configurer
cd /path/to/FleetHub
composer install
cp .env.example .env
php artisan key:generate
# Exécuter des migrations et générer des données initiales
php artisan migrate --seed
# Démarrer le serveur de développement
php artisan serve
# Alors visitez: http://127.0.0.1:8000/install
Problèmes courants de l'hôte local
La caméra du scanner QR ne s'ouvre pas sur http://
Les API des caméras du navigateur nécessitent HTTPS, à une exception près : http://localhost et http://127.0.0.1 sont traités comme des contextes sécurisés. Si vous accédez à FleetHub via votre IP LAN (par exemple http://192.168.1.10), la caméra refusera. Utilisez localhost pour le développement ou activez HTTPS via Herd / mkcert.
Autorisation refusée sur le stockage (macOS / Linux)
Si vous voyez des erreurs d'écriture lorsque l'application tente de se connecter ou de se mettre en cache, corrigez les autorisations : chmod -R 775 storage bootstrap/cache. Sous Windows, cela n'est généralement pas nécessaire.
Port déjà utilisé
Si le port 8000 est utilisé par une autre application, utilisez un autre port :
php artisan serve --port=8001
Tester les e-mails localement
Le vrai SMTP n'est pas disponible sur la plupart des configurations localhost. Deux options sûres : (1) définir MAIL_MAILER=log dans .env — les e-mails sont transférés vers storage/logs/laravel.log au lieu d'être envoyés ; ou (2) utilisez Mailtrap / MailHog pour capturer le courrier sortant dans une fausse boîte de réception.
MAIL_MAILER=log
# Tous les e-mails sont écrits dans storage/logs/laravel.log
Actifs frontend (Vite / Tailwind)
L'interface Vue/Tailwind de FleetHub est pré-construite dans le package. Si vous modifiez des composants Vue ou la configuration Tailwind, vous aurez besoin de Node.js 18+ :
npm install
npm run dev # Rechargement à chaud pendant le développement
npm run build # Version de production (exécutée avant le déploiement)
Déploiement sur Hostinger Single (hébergement partagé)
Il s’agit du chemin recommandé pour les utilisateurs sans VPS ni expérience technique. FleetHub est entièrement compatible avec le plan Hostinger Single Web Hosting le moins cher (~ 2,99 $/mois). Pas de SSH, pas de Composer, pas de ligne de commande nécessaire – Single inclut des tâches cron natives, PHP 8.3 et SSL gratuit prêt à l'emploi.
Étape 1 — Préparez votre hébergement
- Connectez-vous à Hostinger hPanel.
- Accédez à Hébergement → Gérer pour votre domaine.
- Définissez la version PHP sur 8.2 ou 8.3 via Avancé → Configuration PHP.
- Assurez-vous que ces extensions PHP sont activées (généralement par défaut) :
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
Étape 2 — Créer une base de données MySQL
- Dans hPanel, accédez à Bases de données → Bases de données MySQL.
- Cliquez sur Créer une nouvelle base de données.
- Notez ces 3 valeurs :
Nom de la base de données— par ex.u123_FleetHubNom d'utilisateur— par ex.u123_adminMot de passe— généré automatiquement, gardez-le en sécurité
Étape 3 — Téléchargez des fichiers
- Accédez à Fichiers → Gestionnaire de fichiers dans hPanel.
- Accédez à
public_html/(il s'agit de la racine de votre domaine). - Supprimez tout
index.htmloudefault.phppar défaut dans ce dossier. - Cliquez sur Télécharger des fichiers et téléchargez l'intégralité du
source.zipdu package.
Ou téléchargez le contenu du dossier/source/directement via FTP si vous préférez. - Si vous avez téléchargé un ZIP, faites un clic droit → Extrait. Après extraction, tous les fichiers doivent être à la racine de
public_html/. - Vérifiez que
public_html/contient :app/,public/,vendor/,.htaccess,index.php(danspublic/),.env, etc.
.htaccess existe à la racine de public_html/. Il contient les règles de réécriture d'URL. Si le Gestionnaire de fichiers masque les fichiers cachés, cliquez sur Paramètres → Afficher les fichiers cachés.
Étape 4 - Exécutez le programme d'installation
- Ouvrez votre navigateur et accédez à
https://yourdomain.com/install. - Vous verrez le programme d’installation FleetHub.
- Étape 1 : Exigences — Tous les contrôles doivent réussir (vert). En cas d'échec, contactez le support Hostinger pour activer l'extension PHP manquante.
- Étape 2 : Base de données — Saisissez les informations d'identification de l'étape 2 ci-dessus :
- Hôte:
localhost - Port:
3306 - Base de données:
u123_FleetHub - Nom d'utilisateur:
u123_admin - Mot de passe : (celui généré par Hostinger)
- Hôte:
- Étape 3 : Migrer — Cliquez sur « Exécuter les migrations et les semences ». Prend environ 10 secondes. Ne rafraîchissez pas.
- Étape 4 : Admin — Créez votre compte administrateur. Utilisez un mot de passe fort.
- Terminé ! — Vous verrez l'URL Cron (enregistrez-la !) et un bouton pour vous connecter.
Étape 5 — Configurer des alertes automatiques par e-mail via Hostinger Cron
FleetHub utilise le planificateur de Laravel pour les tâches en arrière-plan : alertes d'expiration de conformité, rappels de maintenance, avis de demande de retard, alertes de permis de conduire, mises à jour de la valeur des véhicules et recalcul du score de santé de la flotte. Configurez one tâche cron dans hPanel et Laravel décide quelle tâche exécuter et à quel moment.
- Dans hPanel, accédez à Avancé → Cron Jobs.
- Cliquez sur Créer une tâche Cron.
- Sélectionnez le type : Custom (pas "PHP" — nous devons passer un argument).
- Pour la commande, saisissez (remplacez
uXXXXXXpar le nom d'utilisateur de votre compte Hostinger) :
Astuce : ouvrez le Gestionnaire de fichiers, localisez le fichier/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:runartisan(racine de votre projet), faites un clic droit → Propriétés pour copier le chemin complet. - Définissez le calendrier sur Chaque minute — les cinq champs (Minute, Heure, Jour, Mois, Jour de la semaine) sont définis sur
*. - Cliquez sur Enregistrer.
C'est tout : FleetHub envoie désormais des rappels de réquisition en retard, des alertes de maintenance, des alertes de conformité et d'expiration des licences, actualise les valeurs d'amortissement des véhicules et recalcule automatiquement le score de santé de la flotte.
public_html/public/? Pas de problème — votre code Laravel vit toujours à la racine public_html/, donc le chemin cron reste /home/uXXXX/public_html/artisan (n'ajoutez pas /public/).
- Connectez-vous en tant qu'administrateur → Paramètres → Onglet Système → copiez votre URL Cron.
- Inscrivez-vous gratuitement sur cron-job.org.
- Créez une tâche cron, collez l'URL, définissez Toutes les 15 minutes, enregistrez.
Étape 6 — Configurer le courrier électronique (SMTP)
Hostinger fournit des comptes de messagerie avec chaque forfait. Pour les utiliser pour les notifications FleetHub :
- Dans hPanel, accédez à E-mails → Comptes de messagerie et créez-en un (par exemple
noreply@yourdomain.com). - Modifiez le fichier
.envdanspublic_html/via le gestionnaire de fichiers :MAIL_MAILER=smtp MAIL_HOST=smtp.hostinger.com MAIL_PORT=587 MAIL_USERNAME=noreply@yourdomain.com MAIL_PASSWORD=your_email_password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=noreply@yourdomain.com MAIL_FROM_NAME="Your Company Name" - Enregistrez le fichier.
- Connectez-vous à FleetHub → Paramètres → onglet E-mail → Envoyer un e-mail de test. Si vous le recevez, vous avez terminé.
Problèmes courants sur Hostinger Single
"500 Erreur de serveur interne" après le téléchargement
- Vérifiez que
.htaccessexiste à la racinepublic_html/et contient les règles de réécriture. - Vérifiez que la version de PHP est définie sur 8.2 ou 8.3 dans hPanel.
- Vérifiez
storage/logs/laravel.logvia le gestionnaire de fichiers pour l'erreur réelle.
"Autorisation refusée" lors des téléchargements
Hostinger définit généralement les autorisations correctes, mais sinon :
- Cliquez avec le bouton droit sur
storage/dans le Gestionnaire de fichiers → Permissions → défini sur755de manière récursive. - Idem pour
bootstrap/cache/.
La caméra du scanner de code QR ne s'ouvre pas
Les API de caméra du navigateur nécessitent HTTPS. Hostinger fournit SSL gratuit via Let's Encrypt — activez-le dans hPanel sous SSL → Gérer.
Les e-mails programmés ne sont pas envoyés
- Dans hPanel → Cron Jobs → vérifiez la colonne Dernière exécution sur votre entrée cron. S'il est vide, le cron ne se déclenche pas – vérifiez que le chemin de l'artisan est correct.
- Testez la commande manuellement : ouvrez Terminal dans hPanel (si disponible) et exécutez la commande cron. En cas d'erreur, le message d'erreur identifiera le problème (mauvaise version PHP, mauvais chemin, etc.).
- Vérifiez que SMTP est correctement configuré (Paramètres → E-mail → Envoyer le test).
- Vérifiez
storage/logs/laravel.logpour les erreurs du planificateur.
Performances lentes
Hostinger Single a partagé le CPU/RAM. Si votre équipe compte plus de 20 utilisateurs, pensez à :
- Mise à niveau vers Premium (~ 3,99 $/mois) : des serveurs plus rapides, plus de ressources, plusieurs bases de données.
- Ou Business (~ 5,99 $/mois) : ressources dédiées, sauvegardes quotidiennes, environnement de test.
Déploiement sur cPanel (hébergement partagé)
Ce guide couvre l'hébergement partagé standard cPanel (Namecheap, Bluehost, GoDaddy et la plupart des hébergeurs économiques). FleetHub est livré avec vendor/ et des ressources frontales prédéfinies — aucun Composer, npm ou terminal Web n'est requis. Si votre cPanel ne dispose pas de terminal, utilisez SSH Access ou les solutions de contournement du gestionnaire de fichiers ci-dessous.
/home/CPANELUSER/ — vérifiez la barre latérale dans cPanel sous Informations générales.
Étape 1 — Définir la version et les extensions de PHP
- Connectez-vous à cPanel.
- Ouvrez MultiPHP Manager (ou Sélectionnez la version PHP) et définissez votre domaine sur PHP 8.2 ou 8.3.
- Ouvrez MultiPHP INI Editor ou PHP Extensions et confirmez qu'ils sont activés :
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
- Si une extension est manquante, activez-la dans la liste des extensions ou contactez le support de votre hébergeur.
Étape 2 — Activer SSL (HTTPS)
- Accédez à Statut SSL/TLS (ou Let's Encrypt SSL / AutoSSL).
- Exécutez AutoSSL ou installez un certificat gratuit pour votre domaine.
- HTTPS est obligatoire pour que le scanner QR intégré au navigateur puisse accéder à la caméra.
https://yourdomain.com pour confirmer que l'icône de cadenas apparaît.
Étape 3 — Créer une base de données MySQL et un utilisateur
- Ouvrez Gérer mes bases de données (sous Bases de données).
- Sous Créer une nouvelle base de données, entrez un nom (par exemple
fleethub) et cliquez sur Créer. cPanel ajoute automatiquement le préfixe de votre compte — le nom complet ressemblera àcpaneluser_fleethub. - Sous Utilisateurs MySQL, créez un utilisateur avec un mot de passe fort. Copiez le nom d'utilisateur préfixé complet.
- Sous Ajouter un utilisateur à la base de données, sélectionnez l'utilisateur et la base de données, cliquez sur Ajouter, puis accordez TOUS LES PRIVILÈGES. Cette étape est facile à manquer : sans elle, vous obtenez des erreurs
Access denied (1045). - Notez ces trois valeurs exactement comme indiqué dans cPanel :
Nom de la base de données— par ex.u123_FleetHubNom d'utilisateur— par ex.u123_adminMot de passe— généré automatiquement, gardez-le en sécurité
Étape 4 — Téléchargez des fichiers
- Ouvrez File Manager et accédez à
public_html/(racine du document de votre domaine). - Activez Paramètres → Afficher les fichiers cachés pour que vous puissiez voir
.htaccesset.env. - Supprimez tout
index.htmlpar défaut danspublic_html/s'il est présent. - Téléchargez le package
source.zipet Extract, ou téléchargez le contenu du dossier/source/via FTP. - Après extraction,
public_html/doit contenirapp/,public/,vendor/, racine.htaccessetartisanau même niveau.
.htaccess redirige toutes les requêtes vers le dossier public/ — vous n'avez pas besoin de modifier manuellement la racine du document sur la plupart des hôtes.
Étape 5 — Préparez .env avant d'exécuter le programme d'installation
Terminez cette étape avant de visiter /install. Laravel nécessite un APP_KEY valide et des paramètres de base de données corrects dans .env.
- Dans le gestionnaire de fichiers, copiez
.env.examplevers.env(même dossier queartisan). - Modifiez
.envet définissez au minimum :APP_NAME=FleetHub APP_ENV=production APP_DEBUG=false APP_URL=https://yourdomain.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=cpaneluser_fleethub DB_USERNAME=cpaneluser_admin DB_PASSWORD="your_password" SESSION_DRIVER=file CACHE_STORE=file - Définir
DB_CONNECTION=mysql— la valeur par défaut.env.exampleutilise SQLite ; l'hébergement partagé nécessite MySQL. - Définissez
SESSION_DRIVER=fileetCACHE_STORE=fileavant la première migration (évite les erreurs "table de sessions introuvable"). - Mettez
DB_PASSWORDentre guillemets doubles s'il contient des caractères spéciaux (#,$,!, etc.).
Générer APP_KEY (aucun terminal requis)
De nombreux forfaits cPanel n'incluent pas de terminal Web. Utilisez l'une de ces méthodes :
- Accès SSH (cPanel → Sécurité → Accès SSH) : connectez-vous avec PuTTY ou PowerShell, puis exécutez
cd ~/public_html && php artisan key:generate. - Aide du gestionnaire de fichiers — créez
public/genkey.phptemporairement, visitez-le dans votre navigateur, copiez la sortie dansAPP_KEY=, puis supprimez le fichier immédiatement.<?php echo 'base64:' . base64_encode(random_bytes(32)); - Sur votre PC — si PHP est installé localement, exécutez
php -r "echo 'base64:'.base64_encode(random_bytes(32));"et collez le résultat dans.env.
genkey.php dès que vous copiez la clé. Ne laissez jamais de scripts d'assistance sur un serveur de production.
- Définissez les autorisations
storage/etbootstrap/cache/sur 755 (récursif) si le programme d'installation signale des erreurs d'écriture.
Étape 6 — Exécutez le programme d'installation Web
- Ouvrez
https://yourdomain.com/installdans votre navigateur. - Étape 1 : Exigences — tous les contrôles doivent réussir (vert). Corrigez toutes les extensions PHP manquantes à l’étape 1 ci-dessus.
- Étape 2 : Base de données — saisissez les noms de préfixe exacts de l'étape 3 :
- Hôte:
127.0.0.1orlocalhost - Port:
3306 - Base de données:
cpaneluser_fleethub - Nom d'utilisateur:
cpaneluser_admin - Mot de passe: (your MySQL password)
- Hôte:
- Étape 3 : Migrer — cliquez sur « Exécuter les migrations et les semences ». Prend environ 10 secondes. Ne rafraîchissez pas la page.
- Décochez Inclure les données de démonstration pour une installation de production propre.
- Étape 4 : Admin — créez votre compte administrateur.
- Terminé ! — enregistrez l'URL Cron affichée sur l'écran final.
Étape 7 — Configurer les tâches Cron pour les alertes par e-mail
FleetHub a besoin d'une tâche cron exécutée toutes les minutes pour que Laravel puisse envoyer des alertes de conformité, des rappels de maintenance, des avis de retard de demande et d'autres e-mails programmés.
- Dans cPanel, accédez à Avancé → Cron Jobs.
- Sous Ajouter une nouvelle tâche Cron, définissez la planification sur Chaque minute (
* * * * *). - Entrez la commande (remplacez
CPANELUSERpar votre nom d'utilisateur cPanel dans les informations générales) :
Astuce : le chemin PHP peut être/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run/usr/local/bin/phpou/usr/bin/php— demandez à votre hébergeur en cas de doute. Le chemin artisanal est l'endroit où vous avez téléchargé le projet (généralement/home/CPANELUSER/public_html/artisan). - Cliquez sur Ajouter une nouvelle tâche Cron pour enregistrer.
public_html/public/ ? Cron pointe toujours vers /home/CPANELUSER/public_html/artisan — n'ajoutez pas /public/.
- Connectez-vous en tant qu'administrateur → Paramètres → Système → copiez l'URL Cron.
- Inscrivez-vous sur cron-job.org (gratuit).
- Créez une tâche en cliquant sur cette URL toutes les 15 minutes.
Étape 8 — Configurer le courrier électronique (SMTP)
Créez un compte de messagerie cPanel pour les notifications sortantes :
- Allez dans Comptes de messagerie → créez par ex.
noreply@yourdomain.com. - Modifiez
.envdans le gestionnaire de fichiers :MAIL_MAILER=smtp MAIL_HOST=mail.yourdomain.com MAIL_PORT=587 MAIL_USERNAME=noreply@yourdomain.com MAIL_PASSWORD=your_email_password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=noreply@yourdomain.com MAIL_FROM_NAME="Your Company Name" - Enregistrez, puis dans FleetHub : Paramètres → E-mail → Envoyer un e-mail de test.
Problèmes courants sur cPanel
"Accès refusé pour l'utilisateur" (SQLSTATE 1045)
- Copiez le nom de la base de données et le nom d'utilisateur exactement depuis cPanel, y compris le préfixe du compte.
- Confirmez que vous avez terminé Ajouter un utilisateur à la base de données avec TOUS LES PRIVILÈGES.
- Réinitialisez le mot de passe MySQL dans cPanel et mettez à jour
.env— utilisez des guillemets autour deDB_PASSWORDs'il contient des caractères spéciaux.
La migration échoue une fois l'étape de base de données passée
- L'assistant teste les informations d'identification du formulaire, mais Migrate lit
.env. Assurez-vous que les deux correspondent. - Supprimez
bootstrap/cache/config.phps'il existe, puis réessayez. - Assurez-vous que
DB_CONNECTION=mysqlest défini dans.env(pas dans SQLite).
"Valeur par défaut invalide" lors de la migration (1067)
Le mode strict de MySQL sur l'hébergement partagé peut rejeter certaines valeurs par défaut de colonnes. Vérifiez storage/logs/laravel.log pour l'erreur de migration exacte et assurez-vous que PHP 8.2+ avec toutes les extensions requises activées.
"500 Erreur de serveur interne" après le téléchargement
- Vérifiez que la racine
.htaccessexiste et que PHP est 8.2+. - Vérifiez
storage/logs/laravel.logpour la vraie erreur. - Confirmez que
APP_KEYest défini dans.env— une clé vide provoque 500 erreurs.
Pas de terminal dans cPanel
C'est normal sur de nombreux forfaits partagés. Utilisez SSH Access (si activé), la méthode temporaire genkey.php à l'étape 5, ou générez la clé sur votre PC local.
La caméra du scanner QR ne s'ouvre pas
Activez SSL via Statut SSL/TLS → AutoSSL et accédez au site via https://.
Configuration
Fichier .env
| Clé | Description | Exemple |
|---|---|---|
APP_NAME | Nom de l'application affiché dans la barre de titre | FleetHub |
APP_URL | URL publique de votre installation | https://fleet.example.com |
APP_DEBUG | Réglé sur false en production | false |
DB_* | Détails de connexion à la base de données | mysql, 127.0.0.1, 3306, ... |
MAIL_MAILER | Pilote de messagerie | smtp, log, mailgun |
MAIL_HOST | Nom d'hôte du serveur SMTP | smtp.gmail.com |
MAIL_PORT | Port SMTP | 587 |
MAIL_USERNAME | Nom d'utilisateur SMTP | your@email.com |
MAIL_PASSWORD | Mot de passe SMTP ou jeton d'application | ********** |
MAIL_FROM_ADDRESS | Adresse de départ par défaut | noreply@example.com |
Paramètres dans l'application
La plupart des options non sensibles sont configurables depuis Admin → Paramètres :
- Général : nom de l'entreprise/e-mail/téléphone, image de marque
- Fleet : préfixe du code du véhicule, modèle de liste de contrôle de remise, paramètres de maintenance par défaut, mode page du véhicule public
- Email : envoyer un e-mail de test pour vérifier SMTP
- Notifications : basculer entre les alertes de conformité, de maintenance, de demande et de licence
- Localisation : fuseau horaire, format de date, devise — appliqué à l'ensemble de l'application
- Conformité : gérer les préréglages des types de conformité (assurance, immatriculation, taxe de circulation, etc.)
- Branding : nom et logo de l'application – met à jour la connexion, le pied de page et le titre de la page du navigateur
- Apparence : personnalisez les couleurs de la marque, du statut et du texte pour les modes clair et sombre — voir guide de rebrand dans la FAQ
Prise en charge multilingue
FleetHub est livré avec 11 langues prêtes à l'emploi, dont l'arabe RTL et l'hindi. Les utilisateurs changent de langue via la liste déroulante des drapeaux dans l'en-tête supérieur droit.
Langues expédiées
| Code | Langue | Direction |
|---|---|---|
en | English (default) | LTR |
vi | Tiếng Việt | LTR |
es | Español | LTR |
fr | Français | LTR |
de | Deutsch | LTR |
zh | 简体中文 | LTR |
ja | 日本語 | LTR |
pt-BR | Português (Brasil) | LTR |
ru | Русский | LTR |
ar | العربية | RTL |
hi | हिन्दी | LTR |
Comment changer de langue
- Cliquez sur l'icône de drapeau dans l'en-tête en haut à droite pour ouvrir la liste déroulante.
- Choisissez votre langue dans la liste.
- La page se recharge ; toutes les étiquettes, dates et formats de devises de l'interface utilisateur changent.
- Votre choix est enregistré à la fois dans votre compte utilisateur et dans un cookie (1 an).
/locale/{code}, qui ne fonctionne que lorsqu'un serveur PHP est en cours d'exécution. Accédez toujours via votre domaine réel (production) ou http://localhost:8000 (dév avec php artisan serve). En revanche, les fichiers de documentation comme celui-ci sont entièrement autonomes et peuvent être ouverts directement.
Ajout d'une langue personnalisée (administrateur)
Accédez à Administration → Traductions (utilisateurs administrateurs avec l'autorisation gérer les traductions) :
- Cliquez sur « Ajouter une langue » — fournissez un code (par exemple
mkpour le macédonien), un nom d'affichage, un nom natif, le nom du fichier SVG du drapeau, la direction (LTR/RTL) et une langue de base à partir de laquelle copier les traductions. - Les nouveaux paramètres régionaux apparaissent dans le sélecteur de langue et dans la liste Paramètres → Langue par défaut de localisation.
- Les traductions stockées dans la base de données remplacent automatiquement les traductions de fichiers dans
lang/{code}/.
Éditeur de traduction
L'éditeur répertorie toutes les clés de traduction regroupées par fichier (par exemple, ressources, navigation, paramètres). Les clés affichent la ligne de base du fichier et tout remplacement de base de données.
- Filtrez par paramètres régionaux, groupe de traduction ou texte de recherche.
- Cliquez sur une valeur pour la modifier en ligne ; les modifications sont immédiatement enregistrées dans la base de données.
- Réinitialisez une clé pour revenir à la ligne de base du fichier.
- Les paramètres régionaux intégrés (en, vi, es, …) peuvent être modifiés ; les paramètres régionaux personnalisés sont entièrement pilotés par la base de données.
- Seuls les utilisateurs disposant de l'autorisation gérer les traductions peuvent accéder à cette page.
Importation/exportation CSV
- Exporter — téléchargez toutes les clés d'un paramètre régional au format CSV (
group,key,value). - Import — téléchargez un CSV avec les mêmes colonnes ; Les remplacements de base de données existants sont mis à jour, de nouvelles clés sont insérées.
Paramètres régionaux par défaut par utilisateur
Chaque utilisateur dispose d'une colonne locale. Les notifications par e-mail sont automatiquement envoyées dans la langue préférée du destinataire grâce au contrat HasLocalePreference de Laravel.
La langue par défaut du site est définie sous Paramètres → Localisation → Langue par défaut. Les utilisateurs individuels remplacent cela via le sélecteur de langue d'en-tête.
Liste des fonctionnalités (15 groupes de modules)
Gestion des véhicules
- Codes de véhicule générés automatiquement (préfixe VH)
- Plaque d'immatriculation, VIN, marque, modèle, type de carburant
- Génération de code QR et impression par lots
- Statut, état, suivi du compteur kilométrique
- Importation/exportation groupée Excel
- Véhicule clone pour des achats de flotte identiques
- Page de détails à 7 onglets avec chronologie du cycle de vie
Réquisitions et transferts
- Demander → approuver → renvoyer le workflow
- Vue du calendrier et détection des conflits
- Mappeur de dégâts 2D + signature numérique
- Exportation du rapport de transfert au format PDF
Entretien
- Planification préventive et corrective
- Vue du calendrier par priorité
- Planification automatique du prochain préventif
- Suivi des coûts → synchronisation automatique des dépenses
- Rappels par e-mail avant la date d'échéance
Conformité et carburant
- Éléments de conformité génériques (assurance, enregistrement, permis)
- Suivi de l'expiration du permis de conduire
- Journaux de carburant avec téléchargement et compression des reçus
- Validation du compteur kilométrique anti-fraude
Coût total de possession et amortissement
- 3 modes d'amortissement dont unités de production (km)
- Tableau de bord TCO avec mesures de coût/km
- Synchronisation automatique du carburant et de l'entretien avec les dépenses
- Graphiques de courbe d'amortissement
Rapports
- 7 types de rapports de flotte
- Exportation Excel + PDF
- Tableaux de bord ApexCharts
- Filtres de plage de dates
Opérations de la flotte
- Score de santé de la flotte avec recalcul quotidien
- Gestion des pilotes avec synchronisation des licences
- Frais de véhicule (assurance, péage, parking, etc.)
- Analyse rapide QR pour les conducteurs (carburant, compteur kilométrique, incident)
Localisation
- 11 langues d'interface utilisateur intégrées + paramètres régionaux personnalisés
- Éditeur de traduction avec recherche et édition en ligne
- Importation/exportation CSV pour les mises à jour de traduction groupées
- Paramètres de fuseau horaire et de devise appliqués à l'ensemble de l'application
Image de marque et apparence
- Titre de la page du navigateur depuis Paramètres → Marque → Nom de l'application
- Personnalisez les couleurs de l'application dans Paramètres → Apparence (mode clair et sombre)
Utilisateurs et rôles
FleetHub est livré avec 5 rôles préconfigurés pour les opérations internes de la flotte :
| Rôle | Capacités |
|---|---|
| Administrateur | Accès complet au système : utilisateurs, services, paramètres, journal d'audit, webhooks, traductions |
| Gestionnaire de flotte | Gérer les véhicules, les chauffeurs, les réquisitions, les remises, la maintenance, les journaux de carburant ; approuver les demandes ; accès aux rapports complets |
| Comptable | Tableau de bord TCO, dépenses, amortissements, rapports de conformité – accent financier à forte lecture |
| Chef de département | Approuver les demandes pour votre propre service, consulter les véhicules et les rapports du service |
| Conducteur | Afficher le véhicule attribué, soumettre les journaux de carburant, effectuer une analyse rapide, afficher vos propres demandes |
Comptes démo (mot de passe : password) : admin@fleethub.test, manager@fleethub.test, dept@fleethub.test, accountant@fleethub.test, driver@fleethub.test. Activez les données de démonstration pendant l’installation ou l’amorçage. Les autorisations sont des rôles Spatie – les administrateurs peuvent affiner chaque autorisation.
Gestion des véhicules
Créer des véhicules
- Accédez à Véhicules → Nouveau véhicule.
- Remplissez la plaque d'immatriculation, la marque, le modèle, l'année, le type de carburant, la catégorie et le département.
- Ajoutez la date et le coût d'achat (obligatoires pour l'amortissement et le TCO).
- Téléchargez des images (plusieurs fichiers pris en charge, maximum 5 Mo chacun – auto-compressés sur mobile).
- Enregistrer : le code du véhicule et le code QR sont générés automatiquement.
Format du code du véhicule
Par défaut : {PREFIX}-{YEAR}-{NNNN}, par ex. VH-2026-0001. Configurable via Paramètres → Flotte → Préfixe du code du véhicule.
Importation en masse
- Cliquez sur Importer sur la page Véhicules.
- Téléchargez le modèle Excel.
- Remplissez vos données — colonnes obligatoires :
license_plate,make,model,category_name. - Téléchargez le fichier.
Codes QR et analyse rapide
Chaque véhicule reçoit automatiquement un code QR lors de sa création. La numérisation ouvre la page du véhicule public ou des actions rapides dans l'application pour les conducteurs authentifiés.
Impression d'étiquettes
- Étiquette unique : cliquez sur l'icône de l'imprimante sur n'importe quelle ligne de véhicule.
- Impression par lots : Sélectionnez plusieurs véhicules → Imprimer les étiquettes QR. Format A4, 2 étiquettes par rangée.
Analyse intégrée à l'application
Cliquez sur Scan QR sur la page Véhicules. Autoriser l'autorisation de la caméra. Fonctionne sur n'importe quel navigateur moderne avec HTTPS ou localhost.
Page des véhicules publics
Chaque véhicule possède une URL publique à /v/{vehicle_code} — utile pour une identification rapide sans se connecter.
- Configurez dans Paramètres → Flotte → Page Véhicule public : Public, Connexion requise ou Désactivé.
- Le mode Invité affiche des informations de base en lecture seule (plaque, marque/modèle). Les actions rapides du conducteur nécessitent une connexion.
- Après avoir modifié
APP_URL, cliquez sur Régénérer tous les codes QR dans Paramètres.
Flux de travail
Réquisitions de véhicules
Les employés soumettent des demandes pour les véhicules dont ils ont besoin. Débit : requested → approved → returned (ou rejected). Le gestionnaire de flotte ou le chef de département approuve. La vue Calendrier affiche les réservations à l’échelle de la flotte. Les retours en retard déclenchent des alertes par e-mail.
Remise de véhicule
- Lorsqu'une réquisition est approuvée, créez une Remise sortante avant que le conducteur ne prenne le véhicule.
- Enregistrez le compteur kilométrique, complétez la liste de contrôle, marquez les dommages sur le mappeur 2D, joignez des photos et capturez une signature numérique.
- Enregistrez et téléchargez le rapport de remise au format PDF pour vos dossiers.
- Lors du retour du véhicule, créez une Remise entrante — comparez l'état, mettez à jour le compteur, supprimez l'affectation du conducteur.
- Terminer la remise entrante marque la réquisition comme retournée et remet le véhicule en statut disponible.
Amortissement et coût total de possession
FleetHub calcule la dépréciation du véhicule en utilisant l'une des trois méthodes suivantes. L'amortissement alimente le tableau de bord TCO aux côtés des journaux de carburant et des dépenses.
| Méthode | Formule | Cas d'utilisation |
|---|---|---|
| Ligne droite | (Cost - Salvage) / Useful Life | Le plus courant ; amortissement annuel égal |
| Solde dégressif | 2 / Useful Life × Book Value | Accéléré; à des fins fiscales |
| Unités de production | (km cette période / km total attendu) × (Coût − Récupération) | Véhicules avec un kilométrage total prévisible (basé sur le compteur kilométrique) |
Les valeurs par défaut héritent de la catégorie du véhicule. current_value est automatiquement mis à jour mensuellement via fleethub:update-vehicle-values. TCO = coût d'achat + somme des dépenses du véhicule sur la période sélectionnée.
Champs personnalisés
Admin → Champs personnalisés vous permet d'ajouter un nombre illimité d'attributs personnalisés aux véhicules :
- Types : texte, numéro, date, sélection (liste déroulante), zone de texte, fichier, case à cocher
- Scope : s'applique à toutes les catégories ou à une catégorie de véhicule spécifique
- Réorganiser : glisser-déposer la poignée
- Les champs obligatoires sont validés lors de la sauvegarde du véhicule
Rapports
Sept rapports de flotte intégrés, accessibles depuis le menu Rapports :
- Résumé du TCO — coût total de possession par véhicule et à l'échelle de la flotte
- Barème d'amortissement — perte de valeur par véhicule avec exportation
- Coût d'entretien — dépenses par véhicule, type et mois
- Consommation et coût de carburant — tendances km/l avec anomalies mises en évidence
- Utilisation des demandes — pourcentage de réservation par véhicule au fil du temps
- Expiration de conformité — les documents du véhicule et les permis de conduire expireront bientôt
- Attribution des véhicules par département — véhicules et utilisation par département
Tous les rapports prennent en charge l'exportation Excel et PDF via des boutons dans l'en-tête de la page.
Webhooks
FleetHub peut informer les services externes des événements clés de la flotte.
Événements disponibles
vehicle.created,vehicle.updated,vehicle.deletedrequisition.approved,requisition.rejected,requisition.overdue,requisition.returnedhandover.completedcompliance.expiring,compliance.expiredmaintenance.due,maintenance.overdue,maintenance.completedfleet_health_score.dropped
Format de charge utile
{
"event": "handover.completed",
"timestamp": "2026-06-23T08:00:00+00:00",
"data": {
"vehicle_id": 1,
"vehicle_code": "VH-2026-0001",
"license_plate": "51A-12345",
"handover_id": 12,
"direction": "outgoing",
"driver_id": 4
}
}
Vérification des signatures
Si un secret est configuré, les requêtes incluent l'en-tête X-FleetHub-Signature contenant HMAC-SHA256 du corps de la charge utile. Vérifiez de votre côté :
$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-FleetHub-Signature'))) {
// valide
}
Politique de nouvelle tentative
Les livraisons ayant échoué, réessayez 3 fois avec un délai de 200 ms. Après 10 échecs consécutifs, le webhook est automatiquement désactivé.
Tâches planifiées
FleetHub utilise le planificateur de Laravel pour les tâches en arrière-plan. Vous n'avez besoin que d'une entrée cron one — Laravel envoie chaque commande fleethub: au bon moment.
Hébergement partagé (interface utilisateur cPanel / Hostinger Cron Jobs)
Voir Configuration de cPanel → Étape 7 ou Configuration de Hostinger → Étape 5. En bref : Avancé → Cron Jobs, commande :
/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
Programme : toutes les minutes (* dans les cinq champs).
Commande cron cPanel
Remplacez CPANELUSER par votre nom d'utilisateur cPanel :
/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
VPS / serveur dédié (crontab)
Exécutez crontab -e en tant qu'utilisateur Web et ajoutez :
* * * * * cd /path/to/FleetHub && php artisan schedule:run >> /dev/null 2>&1
Solution de secours : pinger d'URL externe
Si votre hôte n'a pas de cron, utilisez l'URL Cron de l'application (Paramètres → onglet Système) avec cron-job.org (gratuit, toutes les 15 minutes).
Travaux exécutés automatiquement
| Temps | Commande | But |
|---|---|---|
| Tous les jours 08h00 | fleethub:send-requisition-overdue-alerts | Demande approuvée mais non retournée après la date de fin demandée |
| Tous les jours 08h30 | fleethub:send-maintenance-reminders | Rappels de maintenance à venir |
| Tous les jours 09h00 | fleethub:send-compliance-expiry-alerts | Éléments de conformité expirant dans 30/14/7/1 jours |
| Tous les jours 09h30 | fleethub:send-driver-license-alerts | Alertes d'expiration du permis de conduire |
| 1er du mois 02h00 | fleethub:update-vehicle-values | Actualiser la valeur_actuelle du véhicule à partir de la dépréciation |
| Tous les jours 03h00 | fleethub:recalculate-fleet-health-score | Recalculer et mettre en cache le score de santé de la flotte |
Guides de mise à niveau
FleetHub v1.0.0 est la version initiale sur CodeCanyon.
Dépannage
"Autorisation refusée" sur le stockage
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
Le scanner de code QR n'ouvre pas l'appareil photo
Les API de caméra du navigateur nécessitent HTTPS. Installez SSL ou utilisez localhost pour les tests.
Les emails n'arrivent pas
Cochez storage/logs/laravel.log. Utilisez Paramètres → E-mail → Envoyer un e-mail de test pour vérifier SMTP.
Base de données "Accès refusé" (1045) sur cPanel
Nom d'utilisateur/mot de passe incorrect ou affectation utilisateur-base de données manquante. Voir Configuration de cPanel → Problèmes courants.
Erreurs de migration sur l'hébergement mutualisé
Assurez-vous de SESSION_DRIVER=file et CACHE_STORE=file dans .env avant la première migration. Vérifiez storage/logs/laravel.log pour plus de détails.
Erreur APP_KEY / 500 manquante avant l'installation
Laravel nécessite APP_KEY dans .env. Voir Configuration de cPanel → Étape 5 pour les méthodes de génération sans terminal.
Réinitialiser l'installation
Supprimez storage/installed.lock et visitez à nouveau /install. Les données existantes seront effacées si vous réexécutez les migrations.
Performances – liste des véhicules lents
Exécutez php artisan optimize. Assurez-vous des index MySQL sur vehicles.vehicle_code, vehicles.license_plate, vehicles.status (créés par les migrations).
Journal des modifications
v1.0.0 — Version initiale (2026-06)
- Véhicule CRUD avec génération automatique de code QR et page publique à
/v/{vehicle_code} - 5 rôles d'utilisateur (administrateur, gestionnaire de flotte, chef de service, comptable, chauffeur)
- Gestion des pilotes avec synchronisation de l'expiration des licences avec les éléments de conformité
- Flux de travail de demande de véhicule avec calendrier et alertes de retard
- Remise du véhicule avec mappeur de dommages 2D, liste de contrôle, signature et PDF
- Gestion du journal de carburant avec anti-fraude du compteur kilométrique et synchronisation automatique des dépenses
- Tableau de bord des dépenses du véhicule et du TCO avec analyse coût/km
- Moteur d'amortissement — linéaire, dégressif, unités de production (km)
- Articles de conformité génériques avec alertes d'expiration 30/14/7/1 jour
- Planification de la maintenance avec renouvellement automatique préventif et suivi des coûts
- Score de santé de la flotte avec recalcul quotidien et mode de répartition
- 7 rapports de flotte avec export Excel et PDF
- Champs personnalisés (7 types) limités aux catégories de véhicules
- Webhooks avec signature HMAC (
X-FleetHub-Signature) et nouvelle tentative automatique - Journal d'audit via Spatie Activitylog avec visionneuse de différences
- Interface utilisateur multilingue : 11 paramètres régionaux, dont RTL arabe et hindi
- Interface utilisateur des paramètres pour l'entreprise, la flotte, la messagerie électronique, les notifications et les préréglages de conformité
- Assistant d'installation basé sur le Web avec semoir de données de démonstration
- Mode sombre, interface utilisateur axée sur les mobiles, compression d'images pour les téléchargements
Crédits
Bibliothèques open source utilisées
- Laravel 11 — MIT
- Vue 3 — MIT
- Inertia.js — MIT
- Tailwind CSS — MIT
- Spatie Permission, Media Library, Activitylog — MIT
- Phosphor Icons — MIT (duotone weight)
- ApexCharts — MIT
- html5-qrcode — Apache 2.0
- Simple QrCode — MIT
- Laravel Excel — MIT
- Laravel DomPDF — MIT