Mealbox
Plateforme de commande de repas en entreprise sur Android et iOS, développée chez Prima IT Consulting.
Application Flutter destinée aux employés pour une plateforme de commande de repas en entreprise, adossée à une passerelle GraphQL que j'ai également construite sur NestJS et MongoDB.
Mealbox est une plateforme de commande de repas en entreprise pour Android et iOS, développée durant mon passage chez Prima IT Consulting. Les employés se connectent via leur entreprise, parcourent le menu du jour par catégorie, ajoutent des plats au panier et gèrent leur profil.
J'ai travaillé des deux côtés de la passerelle GraphQL : le schéma et les resolvers sur un service NestJS adossé à MongoDB via Mongoose, et le client Flutter qui le consomme. Authentification par jeton, recherche d'entreprise par nom ou par localisation, et requêtes de menu servies par Hive selon une politique cache-puis-réseau.
Fonctionnalités clés
Connexion par entreprise
Authentification par jeton limitée à l'entreprise de l'employé : chaque utilisateur ne voit que les menus et les tarifs de sa propre organisation.
Menu par catégorie
Le menu du jour est structuré par catégorie, ce qui permet de composer un repas complet plutôt que de choisir des plats dans une liste à plat.
Recherche d'entreprise
Les employés trouvent leur organisation par nom ou par localisation de l'appareil, ce qui évite de distribuer des codes par entreprise.
Panier et profil
Composition de la commande et gestion du profil côté client, l'état de la commande restant local jusqu'à la validation.
Stack technique
Architecture
Le client s'adresse à une passerelle GraphQL unique plutôt qu'à un ensemble d'endpoints REST : l'application demande exactement les champs dont un écran a besoin au lieu de recevoir une charge fixe. La passerelle est un service NestJS ; la persistance repose sur MongoDB via Mongoose.
Les requêtes de menu suivent une politique cache-puis-réseau adossée à Hive : le menu en cache s'affiche immédiatement pendant que la requête réseau se résout en arrière-plan.
Défis & Solutions
Les problèmes complexes, et comment je les ai résolus.
Ouvrir sur un menu plutôt que sur un chargement
Limiter chaque requête à la bonne entreprise
Plus de projets
Intéressé par une collaboration ?
Je suis toujours ouvert à discuter de nouveaux projets et opportunités.