Nos projets

Bastiano : un outil de reporting de commandes sur mesure, auto-hébergé et reconstruit

Nous avons repris un outil sur mesure auprès de son créateur externe, l'avons reconstruit sur notre propre infrastructure Cloudflare et l'avons étendu à ce dont la cuisine et les livreurs ont besoin chaque jour. Zéro dépendance, prêt pour de gros volumes.

Bastiano disposait d'un outil de reporting de commandes pratique, mais le faire tourner et l'étendre dépendait entièrement du créateur externe. La question : comment rendre cet outil entièrement à Bastiano, et le rendre meilleur au passage ?

Défi

L'outil existant tournait sur une stack dépassée et dépendait entièrement de son créateur d'origine. Chaque modification ou panne reposait sur quelqu'un d'autre. Et le flux de travail quotidien, la préparation en cuisine, la livraison en camionnette et les clients qui viennent chercher, manquait d'informations cruciales au bon endroit.

Approche

Nous avons entièrement repris l'outil et l'avons reconstruit sur notre propre infrastructure Cloudflare avec notre propre authentification, pour que Bastiano ne dépende plus de personne. Ensuite, une version entièrement nouvelle sur une stack moderne, étendue avec exactement ce dont l'équipe a besoin au quotidien, en étroite concertation avec la gérante. Dernier volet en date : un module livreurs qui planifie les tournées et calcule lui-même les indemnités kilométriques.

De la dépendance externe à une infrastructure maîtrisée

L'outil tourne désormais entièrement sur notre propre infrastructure Cloudflare : un Worker pour la logique, Pages pour l'application et notre propre OAuth pour la connexion avec Shopify. Plus de vendor lock-in, plus d'attente que quelqu'un d'autre ait le temps. Bastiano est propriétaire de toute la chaîne, et les données de commande restent en sécurité derrière l'authentification Shopify.

Un aperçu du jour que la cuisine et le livreur comprennent aussitôt

L'écran principal montre en un coup d'œil ce qui doit être prêt ce jour-là, avec des boutons rapides pour aujourd'hui, demain, après-demain et hier. La liste de préparation regroupe tous les produits avec les bonnes quantités. Les fiches de livraison montrent le nom du client, l'adresse, le téléphone et l'heure de livraison, triées par heure et prêtes pour la tournée. Toute l'application est aux couleurs de Bastiano, et un guide intégré rend l'équipe autonome.

Moins d'erreurs, plus de vitesse

Les notes de commande comme "sans oignon" ou une allergie apparaissent bien en vue à côté de la bonne commande, pour que la cuisine ne rate rien. Une alerte surgit dès qu'une commande n'a pas de date de livraison ou de type, pour qu'aucune commande ne passe inaperçue. En plus : une navigation par section pour se concentrer sur un volet à la fois (tout, préparation, livraisons ou retraits), des livraisons que vous triez par heure ou par code postal pour la tournée, le numéro de téléphone aussi sur les retraits pour rappeler aussitôt un client qui ne se présente pas, des colonnes triables, un vrai export Excel avec plusieurs feuilles et une mise en page d'impression adaptée à la cuisine où vous choisissez quelles listes passent sur papier, chacune sur sa propre page.

De la liste de commandes aux tournées par livreur

Bastiano livre avec plusieurs livreurs. Donner à chacun la même liste de toutes les livraisons provoquait des erreurs, et l'indemnité kilométrique était chaque mois un travail manuel : chercher les distances, recompter les trajets et calculer par livreur ce qu'il fallait payer. ClickForest a donc construit pour le traiteur Bastiano à Bonheiden un module livreurs par-dessus le reporting de commandes, avec deux nouveaux onglets dans l'application : un pour les livreurs, un pour le reporting.

Dans l'onglet des livreurs, Bastiano gère sa propre équipe. L'adresse du domicile de chaque livreur se choisit dans une liste qui apparaît pendant la saisie, de sorte que l'emplacement est fixé jusqu'au numéro de maison. C'est nécessaire, car chaque tournée se termine au domicile du livreur. Chaque jour, vous indiquez qui livre, en général deux à quatre personnes, ou vous reprenez l'équipe d'un jour précédent.

Un clic répartit ensuite les livraisons. L'application les divise en zones contiguës autour de l'établissement, tient compte du lieu où habite chaque livreur, puis cherche la répartition avec le moins de kilomètres au total, avec au maximum une livraison d'écart entre les livreurs. Vous pouvez toujours ajuster.

Pour chaque livreur apparaît la tournée complète, de l'établissement en passant par les livraisons attribuées jusqu'au domicile, dans l'ordre qui compte le moins de kilomètres. Vous voyez la distance, l'indemnité et la durée approximative de la tournée, et chaque tronçon est détaillé séparément, pour vérifier d'où viennent les kilomètres. Si vous déplacez une livraison, les tournées concernées sont recalculées automatiquement. Chaque livreur reçoit sa propre feuille de tournée, avec son nom, la date et les adresses dans l'ordre de passage.

Derrière la répartition et les tournées se cache plus de calcul qu'on ne l'imagine. L'application recherche les adresses de livraison dans le registre d'adresses flamand, qui connaît chaque numéro de maison en Flandre, et nettoie d'abord les saisies approximatives comme un numéro de maison en double ou un numéro de boîte. Si un numéro de maison reste introuvable, la fiche indique "adresse approximative". Sur 60 journées simulées, la répartition a trouvé exactement la solution la plus courte dans 50 cas, et en moyenne elle se situait à 0,36 % au-dessus de cet optimum. Un simple découpage en secteurs autour de l'établissement se situait près de 17 % au-dessus. Nous avons aussi recalculé une vraie journée avec cinq livraisons à l'aide d'un second planificateur d'itinéraire indépendant : l'ordre choisi s'est révélé le plus court des 120 possibles.

Une indemnité kilométrique qui se calcule toute seule

L'onglet de reporting additionne tout sur la période de votre choix, d'une semaine à une année complète. Par livreur, vous voyez les jours, le nombre de livraisons, les kilomètres, le temps et l'indemnité, avec le détail par jour et un sous-total par mois. Bastiano fixe le tarif kilométrique et le temps par livraison. À chaque modification, tout est recalculé, y compris les semaines passées.

  • Mail hebdomadaire : une demande supplémentaire de la gérante. Chaque lundi à 6 h, le rapport de la semaine écoulée arrive dans la boîte mail, avec un fichier Excel en pièce jointe.
  • Excel à tout moment : des feuilles par livreur, par mois et par jour. Qui a besoin du rapport entre-temps l'envoie depuis l'application à l'adresse de son choix.
  • Aucun jour ne passe à la trappe : si une journée compte des livraisons mais aucune répartition, elle apparaît comme alerte jaune en haut du rapport.
  • Les changements tardifs comptent : si une livraison devient finalement un retrait ou est annulée, le rapport recalcule cette journée.

Les kilomètres sont un calcul de l'itinéraire le plus court en voiture sur les vraies routes, fait de la même manière pour chaque livreur. L'indemnité est ainsi objective et vérifiable par tous.

Un seul outil pour deux boutiques

Bastiano a deux boutiques Shopify : une boutique B2B et la boutique B2C très active. Une seule base de code commune les sert toutes les deux. Les différences entre les boutiques se trouvent dans les données, pas dans le code, donc une amélioration s'applique aussitôt aux deux.

Sous le capot

Nous avons remplacé la base dépassée par une stack moderne avec Vite et React 18 : nettement plus légère, plus rapide et bien plus facile à étendre. Les données arrivent via l'API Admin GraphQL moderne de Shopify avec un filtre côté serveur, prête pour de gros volumes. Et l'application est sécurisée par des session tokens Shopify : seule une requête authentique et fraîche depuis la boutique elle-même atteint les données de commande.

Le module livreurs stocke l'équipe et les totaux journaliers dans Cloudflare D1, et chaque nuit une sauvegarde de toutes les données des livreurs part vers R2. Le mail hebdomadaire tourne comme tâche planifiée sur le Worker, qui génère lui-même le fichier Excel et l'envoie via Resend.

Zéro dépendance

Infrastructure et authentification entièrement maîtrisées. Pas de vendor lock-in, Bastiano possède toute la chaîne.

Gain de temps quotidien

Des listes prêtes pour la livraison et des tournées par livreur, avec adresse, heure, notes et kilomètres. Le calcul mensuel des indemnités disparaît.

Prêt pour de gros volumes

Stack moderne et GraphQL, en ligne sur la boutique B2B tranquille comme sur la B2C très active.

Outils utilisés

Cloudflare Workers, Pages, KV, D1 et R2
Shopify Admin API (GraphQL) et App Bridge
Vite et React 18
Itinéraires et temps de trajet via OpenRouteService
Adresses via le registre d'adresses flamand
Mail hebdomadaire avec Excel en pièce jointe via Resend
OAuth propre et sécurité par session tokens
Claude Code (construire avec l'IA)
Votre projet comme prochaine étude de cas ?

Nous travaillons avec des PME belges qui veulent croître.

Via Shopify, le performance marketing et l'IA.

Avis clients

Ce que vivent nos clients

Pourquoi les entrepreneurs aiment travailler avec ClickForest.

Excellent sur Google 5.0 ★★★★★ basé sur 25 avis