FleetHub Documentation

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.

Liste de contrôle de rebranding : mettez à jour Nom de l'application (logo, connexion, titre d'onglet) → modifiez auth.login_subtitle par langue → personnalisez les couleurs dans Paramètres → Apparence.

Référence rapide :

ÉlémentExempleComment modifier
Logo et nomVotre application de flotteParamètres → Marque → Nom de l'application
Sous-titre de connexionSaisissez vos identifiants pour accéder à FleetHubAdministration → Traductionsauth.login_subtitle
Copyright du pied de page© 2026 Votre entrepriseParamètres → Marque → Nom de l'application
Titre de l'onglet du navigateurNomAppParamètres → Marque → Nom de l'application
Couleurs de l'applicationPalette personnaliséeParamè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é)

  1. Téléchargez les fichiers du projet sur votre serveur Web.
  2. Pointez la racine de votre document de domaine sur public/.
  3. Définir les autorisations : storage/ et bootstrap/cache/ doivent être accessibles en écriture (chmod 775).
  4. Copiez .env.example dans .env et définissez APP_KEY (exécutez php artisan key:generate si vous avez SSH/Terminal, ou consultez cPanel Setup → Étape 5).
  5. Visitez https://yourdomain.com/install dans votre navigateur.
  6. 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
Configuration du serveur Web : La racine du document doit pointer vers le répertoire 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.

ChampPar défaut / ExempleRemarques
Host127.0.0.1Fonctionne 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é.
Port3306Port MySQL standard. Ne changez que si votre fournisseur utilise un port non standard.
Nom de la base de donnéesuXXXXXX_fleethubLe nom complet affiché dans votre panneau d'hébergement, y compris tout préfixe.
Nom d'utilisateuruXXXXXX_fleethubUtilisateur 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'erreurCauser et réparer
SQLSTATE[HY000] [1045] Access deniedNom d'utilisateur ou mot de passe incorrect, ou l'utilisateur n'a pas accès à cette base de données.
SQLSTATE[HY000] [1049] Unknown databaseLe 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 refusedLe serveur MySQL n'est pas accessible. Essayez localhost au lieu de 127.0.0.1 ou vice versa.
SQLSTATE[42S02] Base table not found: sessionsDéfinissez SESSION_DRIVER=file et CACHE_STORE=file dans .env avant la migration.
could not find driverL'extension PHP pdo_mysql est manquante. Activez-le dans votre panneau d'hébergement.
Astuce : L'hôte et le port sont pré-remplis avec 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.

Recommandé : Laravel Herd est le chemin le plus rapide sur macOS et Windows — pas de Docker, pas de configuration manuelle Apache/MySQL. XAMPP et Laragon sont de bonnes alternatives gratuites si vous préférez une pile traditionnelle.

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.

  1. Téléchargez et installez Laravel Herd depuis herd.laravel.com.
  2. 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.
  3. 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).
  4. 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).
  5. Copiez .env.example vers .env, remplissez les informations d'identification de la base de données, puis exécutez php artisan key:generate à partir de la racine du projet.
  6. Ouvrez http://fleethub.test/install dans 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.

  1. Téléchargez XAMPP 8.2+ depuis apachefriends.org et installez-le.
  2. Copiez le projet FleetHub dans C:\xampp\htdocs\FleetHub\ (Windows) ou /Applications/XAMPP/htdocs/FleetHub/ (macOS).
  3. 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.
  4. Allez dans http://localhost/phpmyadminNew → créez une base de données nommée fleethub avec le classement utf8mb4.
  5. Dans le dossier du projet : copiez .env.example vers .env, définissez DB_DATABASE=fleethub, DB_USERNAME=root, laissez DB_PASSWORD vide (par défaut XAMPP). Exécutez php artisan key:generate.
  6. Visitez http://localhost/FleetHub/public/install pour exécuter l'assistant d'installation.
Jolies URL sans /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.

  1. Téléchargez Laragon Full depuis laragon.org et installez-le.
  2. Dans Laragon : Menu → PHP → Version — passez à PHP 8.2 ou 8.3.
  3. Copiez le projet FleetHub dans C:\laragon\www\FleetHub\.
  4. Cliquez sur Tout démarrer. Laragon crée automatiquement le vhost : http://fleethub.test (pointant vers le dossier public/).
  5. Ouvrez HeidiSQL (fourni) → créez une base de données fleethub. Informations d'identification par défaut : utilisateur root, mot de passe vide.
  6. Modifiez .env avec les informations d'identification de la base de données, exécutez php artisan key:generate, puis visitez http://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.

Testé sur : Forfaits Hostinger Single, Premium, Business (PHP 8.2+, MySQL 5.7+, tâches Cron natives incluses à tous les niveaux).

Étape 1 — Préparez votre hébergement

  1. Connectez-vous à Hostinger hPanel.
  2. Accédez à Hébergement → Gérer pour votre domaine.
  3. Définissez la version PHP sur 8.2 ou 8.3 via Avancé → Configuration PHP.
  4. 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

  1. Dans hPanel, accédez à Bases de données → Bases de données MySQL.
  2. Cliquez sur Créer une nouvelle base de données.
  3. Notez ces 3 valeurs :
    • Nom de la base de données — par ex. u123_FleetHub
    • Nom d'utilisateur — par ex. u123_admin
    • Mot de passe — généré automatiquement, gardez-le en sécurité

Étape 3 — Téléchargez des fichiers

  1. Accédez à Fichiers → Gestionnaire de fichiers dans hPanel.
  2. Accédez à public_html/ (il s'agit de la racine de votre domaine).
  3. Supprimez tout index.html ou default.php par défaut dans ce dossier.
  4. Cliquez sur Télécharger des fichiers et téléchargez l'intégralité du source.zip du package.
    Ou téléchargez le contenu du dossier /source/ directement via FTP si vous préférez.
  5. 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/.
  6. Vérifiez que public_html/ contient : app/, public/, vendor/, .htaccess, index.php (dans public/), .env, etc.
Important : Assurez-vous que le fichier .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

  1. Ouvrez votre navigateur et accédez à https://yourdomain.com/install.
  2. Vous verrez le programme d’installation FleetHub.
  3. É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.
  4. É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)
  5. Étape 3 : Migrer — Cliquez sur « Exécuter les migrations et les semences ». Prend environ 10 secondes. Ne rafraîchissez pas.
  6. Étape 4 : Admin — Créez votre compte administrateur. Utilisez un mot de passe fort.
  7. 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.

  1. Dans hPanel, accédez à Avancé → Cron Jobs.
  2. Cliquez sur Créer une tâche Cron.
  3. Sélectionnez le type : Custom (pas "PHP" — nous devons passer un argument).
  4. Pour la commande, saisissez (remplacez uXXXXXX par le nom d'utilisateur de votre compte Hostinger) :
    /usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
    Astuce : ouvrez le Gestionnaire de fichiers, localisez le fichier artisan (racine de votre projet), faites un clic droit → Propriétés pour copier le chemin complet.
  5. Définissez le calendrier sur Chaque minute — les cinq champs (Minute, Heure, Jour, Mois, Jour de la semaine) sont définis sur *.
  6. 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.

La racine du document est définie sur 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/).
Retour pour les hôtes sans cron : Si vous n'êtes pas sur Hostinger ou si votre fournisseur ne dispose pas de tâches cron, FleetHub expose également une URL de déclenchement de webhook.
  1. Connectez-vous en tant qu'administrateur → Paramètres → Onglet Système → copiez votre URL Cron.
  2. Inscrivez-vous gratuitement sur cron-job.org.
  3. 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 :

  1. Dans hPanel, accédez à E-mails → Comptes de messagerie et créez-en un (par exemple noreply@yourdomain.com).
  2. Modifiez le fichier .env dans public_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"
  3. Enregistrez le fichier.
  4. Connectez-vous à FleetHub → Paramètres → onglet E-mail → Envoyer un e-mail de test. Si vous le recevez, vous avez terminé.
Limites SMTP sur Single : Hostinger Single autorise environ 100 e-mails sortants par heure. Pour les déploiements plus importants, utilisez un fournisseur dédié comme SendGrid, Mailgun ou Postmark (niveaux gratuits disponibles).

Problèmes courants sur Hostinger Single

"500 Erreur de serveur interne" après le téléchargement

  • Vérifiez que .htaccess existe à la racine public_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.log via 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 sur 755 de 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.log pour 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.

Testé sur : cPanel 110+ avec PHP 8.2/8.3, MySQL 5.7+/MariaDB 10.3+, Apache et les tâches Cron natives. Le répertoire personnel est généralement /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

  1. Connectez-vous à cPanel.
  2. Ouvrez MultiPHP Manager (ou Sélectionnez la version PHP) et définissez votre domaine sur PHP 8.2 ou 8.3.
  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
  4. 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)

  1. Accédez à Statut SSL/TLS (ou Let's Encrypt SSL / AutoSSL).
  2. Exécutez AutoSSL ou installez un certificat gratuit pour votre domaine.
  3. HTTPS est obligatoire pour que le scanner QR intégré au navigateur puisse accéder à la caméra.
Astuce : Attendez quelques minutes après avoir activé SSL, puis visitez 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

  1. Ouvrez Gérer mes bases de données (sous Bases de données).
  2. 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.
  3. Sous Utilisateurs MySQL, créez un utilisateur avec un mot de passe fort. Copiez le nom d'utilisateur préfixé complet.
  4. 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).
  5. Notez ces trois valeurs exactement comme indiqué dans cPanel :
    • Nom de la base de données — par ex. u123_FleetHub
    • Nom d'utilisateur — par ex. u123_admin
    • Mot de passe — généré automatiquement, gardez-le en sécurité

Étape 4 — Téléchargez des fichiers

  1. Ouvrez File Manager et accédez à public_html/ (racine du document de votre domaine).
  2. Activez Paramètres → Afficher les fichiers cachés pour que vous puissiez voir .htaccess et .env.
  3. Supprimez tout index.html par défaut dans public_html/ s'il est présent.
  4. Téléchargez le package source.zip et Extract, ou téléchargez le contenu du dossier /source/ via FTP.
  5. Après extraction, public_html/ doit contenir app/, public/, vendor/, racine .htaccess et artisan au même niveau.
Important : La racine .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.

  1. Dans le gestionnaire de fichiers, copiez .env.example vers .env (même dossier que artisan).
  2. Modifiez .env et 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
  3. Définir DB_CONNECTION=mysql — la valeur par défaut .env.example utilise SQLite ; l'hébergement partagé nécessite MySQL.
  4. Définissez SESSION_DRIVER=file et CACHE_STORE=file avant la première migration (évite les erreurs "table de sessions introuvable").
  5. Mettez DB_PASSWORD entre 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.php temporairement, visitez-le dans votre navigateur, copiez la sortie dans APP_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.
Sécurité : Supprimez 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/ et bootstrap/cache/ sur 755 (récursif) si le programme d'installation signale des erreurs d'écriture.

Étape 6 — Exécutez le programme d'installation Web

  1. Ouvrez https://yourdomain.com/install dans votre navigateur.
  2. Étape 1 : Exigences — tous les contrôles doivent réussir (vert). Corrigez toutes les extensions PHP manquantes à l’étape 1 ci-dessus.
  3. Étape 2 : Base de données — saisissez les noms de préfixe exacts de l'étape 3 :
    • Hôte: 127.0.0.1 or localhost
    • Port: 3306
    • Base de données: cpaneluser_fleethub
    • Nom d'utilisateur: cpaneluser_admin
    • Mot de passe: (your MySQL password)
  4. Étape 3 : Migrer — cliquez sur « Exécuter les migrations et les semences ». Prend environ 10 secondes. Ne rafraîchissez pas la page.
  5. Décochez Inclure les données de démonstration pour une installation de production propre.
  6. Étape 4 : Admin — créez votre compte administrateur.
  7. 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.

  1. Dans cPanel, accédez à Avancé → Cron Jobs.
  2. Sous Ajouter une nouvelle tâche Cron, définissez la planification sur Chaque minute (* * * * *).
  3. Entrez la commande (remplacez CPANELUSER par votre nom d'utilisateur cPanel dans les informations générales) :
    /usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
    Astuce : le chemin PHP peut être /usr/local/bin/php ou /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).
  4. Cliquez sur Ajouter une nouvelle tâche Cron pour enregistrer.
La racine du document est définie sur public_html/public/ ? Cron pointe toujours vers /home/CPANELUSER/public_html/artisan — n'ajoutez pas /public/.
Aucun cron disponible ? Utilisez plutôt l'URL Cron de l'application :
  1. Connectez-vous en tant qu'administrateur → Paramètres → Système → copiez l'URL Cron.
  2. Inscrivez-vous sur cron-job.org (gratuit).
  3. 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 :

  1. Allez dans Comptes de messagerie → créez par ex. noreply@yourdomain.com.
  2. Modifiez .env dans 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"
  3. Enregistrez, puis dans FleetHub : Paramètres → E-mail → Envoyer un e-mail de test.
Limites SMTP de l'hébergement partagé : De nombreux hôtes cPanel plafonnent le courrier sortant (~ 100 à 500/heure). Pour les équipes plus grandes, utilisez SendGrid, Mailgun ou Postmark.

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 de DB_PASSWORD s'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.php s'il existe, puis réessayez.
  • Assurez-vous que DB_CONNECTION=mysql est 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 .htaccess existe et que PHP est 8.2+.
  • Vérifiez storage/logs/laravel.log pour la vraie erreur.
  • Confirmez que APP_KEY est 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éDescriptionExemple
APP_NAMENom de l'application affiché dans la barre de titreFleetHub
APP_URLURL publique de votre installationhttps://fleet.example.com
APP_DEBUGRéglé sur false en productionfalse
DB_*Détails de connexion à la base de donnéesmysql, 127.0.0.1, 3306, ...
MAIL_MAILERPilote de messageriesmtp, log, mailgun
MAIL_HOSTNom d'hôte du serveur SMTPsmtp.gmail.com
MAIL_PORTPort SMTP587
MAIL_USERNAMENom d'utilisateur SMTPyour@email.com
MAIL_PASSWORDMot de passe SMTP ou jeton d'application**********
MAIL_FROM_ADDRESSAdresse de départ par défautnoreply@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

CodeLangueDirection
enEnglish (default)LTR
viTiếng ViệtLTR
esEspañolLTR
frFrançaisLTR
deDeutschLTR
zh简体中文LTR
ja日本語LTR
pt-BRPortuguês (Brasil)LTR
ruРусскийLTR
arالعربيةRTL
hiहिन्दीLTR

Comment changer de langue

  1. Cliquez sur l'icône de drapeau dans l'en-tête en haut à droite pour ouvrir la liste déroulante.
  2. Choisissez votre langue dans la liste.
  3. La page se recharge ; toutes les étiquettes, dates et formats de devises de l'interface utilisateur changent.
  4. Votre choix est enregistré à la fois dans votre compte utilisateur et dans un cookie (1 an).
N'ouvrez pas directement les fichiers .html de l'application. FleetHub est une application côté serveur Laravel + Vue - le langage changeant les POST en /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 mk pour 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ôleCapacités
AdministrateurAccès complet au système : utilisateurs, services, paramètres, journal d'audit, webhooks, traductions
Gestionnaire de flotteGé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
ComptableTableau de bord TCO, dépenses, amortissements, rapports de conformité – accent financier à forte lecture
Chef de départementApprouver les demandes pour votre propre service, consulter les véhicules et les rapports du service
ConducteurAfficher 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

  1. Accédez à Véhicules → Nouveau véhicule.
  2. Remplissez la plaque d'immatriculation, la marque, le modèle, l'année, le type de carburant, la catégorie et le département.
  3. Ajoutez la date et le coût d'achat (obligatoires pour l'amortissement et le TCO).
  4. Téléchargez des images (plusieurs fichiers pris en charge, maximum 5 Mo chacun – auto-compressés sur mobile).
  5. 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

  1. Cliquez sur Importer sur la page Véhicules.
  2. Téléchargez le modèle Excel.
  3. Remplissez vos données — colonnes obligatoires : license_plate, make, model, category_name.
  4. 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

  1. Lorsqu'une réquisition est approuvée, créez une Remise sortante avant que le conducteur ne prenne le véhicule.
  2. 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.
  3. Enregistrez et téléchargez le rapport de remise au format PDF pour vos dossiers.
  4. Lors du retour du véhicule, créez une Remise entrante — comparez l'état, mettez à jour le compteur, supprimez l'affectation du conducteur.
  5. 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éthodeFormuleCas d'utilisation
Ligne droite(Cost - Salvage) / Useful LifeLe plus courant ; amortissement annuel égal
Solde dégressif2 / Useful Life × Book ValueAccé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 :

  1. Résumé du TCO — coût total de possession par véhicule et à l'échelle de la flotte
  2. Barème d'amortissement — perte de valeur par véhicule avec exportation
  3. Coût d'entretien — dépenses par véhicule, type et mois
  4. Consommation et coût de carburant — tendances km/l avec anomalies mises en évidence
  5. Utilisation des demandes — pourcentage de réservation par véhicule au fil du temps
  6. Expiration de conformité — les documents du véhicule et les permis de conduire expireront bientôt
  7. 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.deleted
  • requisition.approved, requisition.rejected, requisition.overdue, requisition.returned
  • handover.completed
  • compliance.expiring, compliance.expired
  • maintenance.due, maintenance.overdue, maintenance.completed
  • fleet_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

TempsCommandeBut
Tous les jours 08h00fleethub:send-requisition-overdue-alertsDemande approuvée mais non retournée après la date de fin demandée
Tous les jours 08h30fleethub:send-maintenance-remindersRappels de maintenance à venir
Tous les jours 09h00fleethub:send-compliance-expiry-alertsÉléments de conformité expirant dans 30/14/7/1 jours
Tous les jours 09h30fleethub:send-driver-license-alertsAlertes d'expiration du permis de conduire
1er du mois 02h00fleethub:update-vehicle-valuesActualiser la valeur_actuelle du véhicule à partir de la dépréciation
Tous les jours 03h00fleethub:recalculate-fleet-health-scoreRecalculer 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.

FleetHub v1.0.0 est la première version publique. Il n'existe pas de version antérieure à mettre à niveau. Les guides de mise à niveau seront ajoutés lors de nouvelles versions.

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