Trouver l’info produit en caisse, en dix secondes.
Une application mobile qui retrouve un article à partir de sa référence fournisseur, affiche ce dont la caisse a besoin pour l’encaisser, et met à jour la quantité de suivi. Elle fonctionne sans réseau.
Le contexte
Chez Leroy Merlin, je gérais un périmètre de trois rayons. À chaque opération saisonnière, et à Noël en particulier, le magasin reçoit des articles qui n’existent pas dans le système.
Pour qui : Hôtes et hôtesses de caisse, et les équipes des rayons concernés
Le problème
Un article non référencé bloque l’encaissement. L’hôtesse doit réunir plusieurs informations avant de pouvoir faire passer le produit. Pendant ce temps la file attend, et le plus souvent elle finit par appeler un manager.
Mon insight
L’information existe déjà quelque part. Ce qui manque, c’est qu’elle arrive jusqu’à la caisse au moment où on en a besoin. Et en magasin, on ne peut jamais compter sur le réseau.
Ma solution
On tape la référence qu’on a sous les yeux, la recherche classe les résultats, la fiche n’affiche que ce qui sert en caisse. Une confirmation décrémente la quantité de suivi et l’historique garde la trace de ce qui a été fait. Il n’y a aucune API derrière : l’interface, les données et les visuels sont précachés, l’état reste sur l’appareil.
L'hypothèse produit
En cherchant par référence fournisseur dans un catalogue embarqué sur le téléphone, on devrait atteindre la bonne fiche en quelques secondes, avec ou sans réseau.
Mon rôle
- Cadrage produit et définition du périmètre
- Architecture données, domaine et features
- Design UX/UI mobile-first
- Développement front (React 19, TypeScript)
- Tests unitaires, d’intégration et E2E multi-viewport
- Accessibilité et thèmes clair/sombre
- Déploiement et documentation
Preuves & qualité
- 30Utilisateurs en magasinDéployée sur le périmètre de 3 rayons, en usage quotidien pendant toute la saison.
- Ce que ça a changéFlux client fluidifié en caisse, erreurs de référence et de prix réduites, sollicitations aux managers supprimées.
- Qualité logicielle14 fichiers de test, E2E Playwright en 390×844 et 1440×1000 rechargement hors ligne inclus, accessibilité vérifiée.
Décisions clés
100 % statique et offline-first, sans aucune API
En magasin la connexion tombe régulièrement, et un outil de caisse qui ne répond pas ne sert à rien. Tout est précaché, donc l’application se lance même hors ligne.
ArbitragePas de synchronisation entre appareils, pas de catalogue mis à jour à distance. Le périmètre reste celui d’une démonstration.
Chercher par référence fournisseur, pas par nom
La référence fournisseur est la seule donnée que la personne a physiquement sous les yeux quand elle cherche. J’ai suivi le geste réel au lieu de suivre le modèle de données.
Rejouer le flux Google Sheets en local plutôt que le connecter
Je voulais garder la logique métier qui compte, de la recherche jusqu’à l’historique, sans exposer de données réelles ni dépendre d’un service tiers.
ArbitrageLe catalogue est figé et fictif. La démo prouve le parcours, pas la donnée.
Stack
- React 19
- TypeScript
- Vite
- Tailwind
- React Router
- Radix
- Vitest
- Playwright