Contexte du projet
Blue Marine est une entreprise de production et distribution de glace professionnelle basée sur la Côte d'Azur. Elle fournit des poissonneries, restaurants, bars, événements et commerces de la région en glace alimentaire et industrielle (glaçons, glace pilée, pains de glace).
Face à une croissance importante et à des besoins métier spécifiques, l'entreprise avait besoin d'un ERP sur mesure pour gérer :
- La production quotidienne de glace (planification, suivi machines)
- Les commandes clients BtoB (récurrentes et ponctuelles)
- La logistique de livraison (tournées optimisées, véhicules frigorifiques)
- Le stock de matières premières et produits finis
- La facturation et comptabilité professionnelle
L'objectif était de développer un ERP métier adapté aux contraintes de la production de glace (périssabilité, froid, saisonnalité forte) avec une interface web moderne accessible depuis les bureaux et les camions de livraison.
Technologies utilisées
Stack actuelle (2024)
- PHP 8.2 : backend moderne avec typage strict
- MySQL 8 : base de données optimisée
- JavaScript (jQuery) : interface réactive
- Architecture MVC custom développée sur mesure
- AJAX pour mises à jour temps réel
- PDF Generation (TCPDF) pour factures et bons de livraison
Évolution en cours (2026)
- Laravel 11 : migration du backend vers framework moderne
- React 18 : refonte complète du frontend
- API REST : architecture découplée
- Docker : conteneurisation pour déploiement
- Redis : cache et optimisation performances
Fonctionnalités principales
Gestion de la production
Planification quotidienne :
- Planning de production par machine (3 machines de fabrication)
- Objectifs quotidiens selon prévisions commerciales
- Suivi en temps réel de la production (quantités, heures)
- Alertes si retard ou panne machine
Types de glace produits :
- Glaçons (sacs 2kg, 5kg, 10kg)
- Glace pilée (sacs 5kg, 10kg)
- Pains de glace (20kg, 50kg)
- Big bags industriels (500kg)
Maintenance préventive :
- Calendrier d'entretien des machines
- Historique des pannes et réparations
- Consommation électrique et eau par machine
- Alertes avant maintenance obligatoire
Gestion commerciale BtoB
Clients professionnels :
- Poissonneries : livraisons quotidiennes glace pilée
- Restaurants/Bars : glaçons, pains de glace
- Événements : big bags pour concerts, festivals
- CHR (Cafés, Hôtels, Restaurants) : contrats annuels
- Grandes surfaces : commandes ponctuelles
Système de commandes :
- Commandes récurrentes : automatisation hebdomadaire/quotidienne
- Commandes ponctuelles : via interface web ou téléphone
- Modifications en temps réel jusqu'à la veille pour le lendemain
- Historique complet par client
- Prévisions basées sur l'historique (IA simple)
Tarification :
- Grille tarifaire par client et volume
- Prix dégressifs selon quantités
- Contrats annuels avec tarifs négociés
- Suppléments (livraison express, weekend)
- Saisonnalité : hausse été, baisse hiver
Logistique et livraisons
Optimisation des tournées :
- 3 camions frigorifiques avec zones géographiques
- Planning quotidien avec ordre de livraison optimisé
- Calcul itinéraire Google Maps API
- Temps de livraison estimé par client
- Alerte retard si écart constaté
Suivi des livraisons :
- Bon de livraison généré automatiquement
- Signature électronique sur tablette chauffeur
- Photo de la marchandise livrée
- Historique GPS des tournées
- Statistiques : taux de ponctualité, km parcourus
Gestion des retours :
- Consigne des sacs réutilisables
- Traçabilité des contenants
- Comptage automatique lors du retour
- Facturation si perte/casse
Gestion des stocks
Matières premières :
- Eau filtrée : consommation quotidienne
- Sacs plastiques : 2kg, 5kg, 10kg, 20kg
- Palettes pour le transport
- Alertes si stock faible
- Commandes automatiques aux fournisseurs
Produits finis :
- Stock en chambre froide (-20°C)
- Capacité maximale : 50 tonnes
- FIFO (First In First Out) strict
- Inventaire quotidien automatique (pesée)
- Alertes si sur/sous-stock
Température et traçabilité :
- Monitoring 24/7 des chambres froides
- Alertes SMS si température > -18°C
- Historique des températures (conformité HACCP)
- Traçabilité complète par lot de production
Facturation et comptabilité
Facturation automatisée :
- Génération automatique en fin de mois
- Récapitulatif des livraisons du mois
- Calcul TVA et remises contractuelles
- Export comptable vers logiciel tiers
- Relances automatiques impayés
Tableaux de bord :
- CA quotidien/mensuel/annuel
- CA par type de client (poissonneries, CHR, événements)
- Marges par produit
- Coûts de production (électricité, eau, main d'œuvre)
- Prévisions basées sur historique
Statistiques métier :
- Tonnes produites par jour/mois
- Taux d'utilisation des machines
- Rendement énergétique
- Saisonnalité des ventes
- Clients actifs vs perdus
Résultats
Gains opérationnels
- -40% de temps sur la gestion administrative (automatisation)
- +25% de productivité grâce à l'optimisation des tournées
- -15% de coûts carburant (itinéraires optimisés)
- Réduction de 80% des erreurs de facturation
- Stock optimisé : -30% de surstockage
Croissance business
- +60% de clients BtoB en 5 ans
- CA multiplié par 2,5 grâce à la fiabilité
- Taux de rétention : 92% (fidélité client)
- Nouveaux marchés : événementiel (+150k€/an)
Satisfaction client
- Ponctualité : 96% des livraisons à l'heure
- Taux de réclamations < 2%
- Note moyenne : 4,7/5 (enquêtes clients)
- Recommandation : 85% recommandent Blue Marine
ROI ERP
- Investissement initial : 45 000€ (développement + déploiement)
- Coûts annuels : 3 000€ (hébergement + maintenance)
- Économies annuelles : 35 000€ (temps, erreurs, optimisation)
- ROI : rentabilisé en 18 mois
Défis techniques
Architecture évolutive sur 15 ans
Défi majeur : maintenir un ERP fonctionnel et évolutif depuis 2010 :
Évolutions successives :
- 2010 : PHP 5.3, MySQL 5, interface desktop-only
- 2015 : Migration PHP 7, responsive design
- 2020 : Upgrade PHP 8.0, refonte UX/UI
- 2024 : PHP 8.2, optimisations performances
- 2026 : Migration Laravel + React (en cours)
Stratégie de migration :
- Migration progressive par module
- Dual-run : ancien et nouveau système en parallèle
- Tests intensifs en production limitée
- Formation utilisateurs continue
- Zero downtime pendant la migration
Monitoring température temps réel
Criticité : la glace doit rester < -18°C en permanence :
Solutions implémentées :
- Sondes IoT dans chaque chambre froide
- API HTTP pour lecture températures toutes les 5min
- Stockage en base de données (historique 5 ans)
- Alertes SMS immédiate si T > -18°C
- Dashboard en temps réel avec graphiques
- Rapports HACCP automatiques pour inspections
Gestion des alertes :
Si T > -18°C pendant 10min :
1. SMS gérant + chauffeur de garde
2. Email avec graphique des 24h
3. Blocage des livraisons du stock concerné
4. Création ticket intervention maintenance
Optimisation des tournées
Problème combinatoire : 3 camions, 80+ clients/jour :
Algorithme développé :
- Clustering géographique : regroupement par zone
- Affectation aux 3 camions selon capacité
- Optimisation par camion (TSP simplifié)
- Contraintes respectées :
- Horaires clients (livraison matin vs après-midi)
- Capacité max camion (3 tonnes)
- Temps de route max (8h)
- Priorité clients premium
Performances :
- Calcul en < 5 secondes pour 80 clients
- Gain moyen 35km/jour vs planning manuel
- -45min/tournée en moyenne
Intégration comptabilité
Export vers le logiciel comptable du client :
Format d'export :
- FEC (Fichier des Écritures Comptables)
- Format CSV personnalisé
- Mapping des comptes clients
- TVA par taux (20%, 10%, 5,5%)
- Export mensuel automatique
Réconciliation bancaire :
- Import relevés bancaires (CSV)
- Rapprochement automatique factures payées
- Alerte si écart détecté
- Suivi des impayés avec relances
Sécurité et sauvegarde
Données critiques = sécurité maximale :
Mesures :
- Sauvegarde automatique quotidienne (3 am)
- Backup incrémental toutes les 4h
- Stockage : local + cloud (OVH)
- Rétention : 30 jours rolling + 12 mois mensuels
- Restauration testée mensuellement
- HTTPS obligatoire
- Accès sécurisés par rôle (production, commercial, direction)
- Logs d'audit complets (qui a fait quoi quand)
Architecture technique
ERP Blue Marine (2024):
├── public/
│ ├── index.php (Entry point)
│ ├── css/
│ │ ├── admin.css
│ │ └── responsive.css
│ ├── js/
│ │ ├── production.js (Planning machines)
│ │ ├── deliveries.js (Tournées)
│ │ ├── charts.js (Graphiques CA)
│ │ └── temperature.js (Monitoring temps réel)
│ └── pdf/
│ ├── invoice.php (Factures)
│ └── delivery-note.php (Bons de livraison)
├── app/
│ ├── controllers/
│ │ ├── ProductionController.php
│ │ ├── OrderController.php
│ │ ├── DeliveryController.php
│ │ ├── StockController.php
│ │ └── BillingController.php
│ ├── models/
│ │ ├── Machine.php
│ │ ├── Order.php
│ │ ├── Customer.php
│ │ ├── Delivery.php
│ │ ├── Product.php
│ │ └── Invoice.php
│ ├── services/
│ │ ├── ProductionPlanner.php
│ │ ├── RouteOptimizer.php (Tournées)
│ │ ├── TemperatureMonitor.php
│ │ └── PricingEngine.php
│ └── views/
├── config/
│ ├── database.php
│ ├── pricing.php (Grilles tarifaires)
│ └── sensors.php (Config sondes IoT)
└── cron/
├── temperature_check.php (Toutes les 5min)
├── auto_orders.php (Commandes récurrentes)
├── backup.php (Daily 3am)
└── billing.php (Facturation fin de mois)
Base de données
Tables principales:
- machines (id, name, type, capacity_kg_hour, status, ...)
- production (id, machine_id, date, quantity_kg, hours, ...)
- products (id, type, weight_kg, price, ...)
- customers (id, company, type, address, pricing_tier, ...)
- orders (id, customer_id, date, recurring, status, ...)
- order_items (order_id, product_id, quantity, ...)
- deliveries (id, truck_id, date, route_order, ...)
- delivery_items (delivery_id, order_id, delivered_qty, signature, ...)
- stock (product_id, location, quantity_kg, temp, ...)
- temperatures (sensor_id, timestamp, temperature, alert, ...)
- invoices (id, customer_id, month, total_ht, status, ...)
Migration Laravel + React (2026)
Architecture cible :
Backend API (Laravel 11):
├── routes/api.php
├── app/
│ ├── Http/Controllers/API/
│ ├── Models/
│ ├── Services/
│ └── Jobs/ (Queue workers)
├── database/migrations/
└── tests/
Frontend SPA (React 18):
├── src/
│ ├── components/
│ │ ├── Production/
│ │ ├── Orders/
│ │ ├── Deliveries/
│ │ └── Dashboard/
│ ├── pages/
│ ├── hooks/
│ ├── services/ (API calls)
│ └── utils/
└── public/
Bénéfices attendus :
- UX moderne : SPA fluide, pas de rechargement
- Performances : API optimisée, cache Redis
- Mobile-friendly : responsive parfait
- Tests automatisés : PHPUnit + Jest
- Déploiement : CI/CD avec Docker
Ce que j'ai appris
Développement métier spécifique
Immersion dans l'industrie de la glace :
- Contraintes frigorifiques (-20°C obligatoire)
- Normes HACCP pour l'alimentaire
- Saisonnalité extrême (été ≠ hiver)
- Logistique du froid (camions frigorifiques)
- BtoB pur : relation client long terme
Optimisation algorithmique
Résolution de problèmes concrets :
- TSP (Traveling Salesman Problem) pour tournées
- Clustering géographique des clients
- Prévisions basées sur historique
- Optimisation stocks (FIFO, surstockage)
- Performance : calculs en temps réel
Évolution d'une application sur 15 ans
Maintenance long terme :
- Migration PHP progressive (5.3 → 8.2)
- Refactoring sans casser l'existant
- Rétro-compatibilité des données
- Formation utilisateurs continue
- Documentation vivante
Monitoring IoT
Intégration hardware/software :
- Sondes de température IoT
- APIs HTTP pour lecture capteurs
- Alertes temps réel (SMS, email)
- Stockage time-series data
- Dashboard avec graphiques
ERP sur mesure vs progiciel
Pourquoi développer plutôt qu'acheter :
- Métier très spécifique (glace industrielle)
- Aucun ERP du marché adapté
- Coût : sur mesure rentabilisé vs licences annuelles
- Flexibilité totale pour évolutions
- Propriété du code et des données
Ce projet ERP sur mesure pour Blue Marine représente 15 ans de collaboration continue avec le client, démontrant ma capacité à maintenir, faire évoluer et moderniser une application métier critique sur le très long terme. La migration en cours vers Laravel+React témoigne de ma veille technologique et de mon adaptation aux stacks modernes.