Aller au contenu
Lancée avec Moocky

MIMAPP

Un écosystème de livraison de repas : applications client, livreur et restaurant reliées en temps réel.

    MIMAPP
    Interfaces

    Le produit en images

    Présentation

    Le projet

    Ce projet est un écosystème complet de livraison de repas de nouvelle génération. Il se compose de trois applications indépendantes, reliées par une base de données PostgreSQL partagée en temps réel, et conçues pour couvrir toute la chaîne de valeur : du client au livreur, en passant par le restaurateur. Les 3 applications 📱 Application client (React Native - mobile) L’application destinée aux consommateurs. Elle couvre tout le parcours d’achat, de la découverte des plats au suivi de la livraison en temps réel. 🚗 Application livreur « Le Coursier » (React Native - mobile) L’application logistique de terrain dédiée aux livreurs. Elle gère l’acceptation des courses, le suivi GPS en arrière-plan et la confirmation des livraisons. 🖥️ Centre d’administration « Le Pilotage » (React Native Web - tablette/ordinateur) Le centre de contrôle des opérateurs et des restaurateurs. Il propose 7 modules de gestion : restaurants, menus, commandes, livreurs, tarification, service de conciergerie et gestion des litiges. Cet écosystème de livraison de repas n’est pas un MVP (produit minimum viable). C’est un socle logiciel complet, asynchrone, réactif et sécurisé, qui couvre toute la chaîne de valeur de la livraison de repas. L’architecture en trois micro-applications reliées par PostgreSQL Realtime garantit : - Une évolutivité horizontale : chaque application peut évoluer indépendamment. - L’intégrité transactionnelle : la conformité ACID de PostgreSQL pour les commandes et les paiements. - Une expérience temps réel : une latence quasi nulle entre le livreur sur le terrain et le client sur son téléphone. - Une intelligence métier : matching nutritionnel, tarification dynamique et gamification intégrés nativement.

    Fonctionnalités

    Ce qu’il fait

    • Tarification dynamique basée sur la géolocalisation

      • La distance entre le client et le restaurant est calculée avec la formule de Haversine (coordonnées GPS, rayon terrestre de 6 371 km), sans aucun appel à une API externe.
      • Le prix de livraison est déterminé par un système de paliers tarifaires configurables, gérés par l’administrateur (table delivery_pricing_tiers).
    • Moteur intelligent de matching nutritionnel

      Un algorithme de score en temps réel évalue chaque plat au regard du profil santé de l’utilisateur :

      • Calcul calorique : formule de Mifflin-St Jeor (métabolisme de base ajusté selon le niveau d’activité et l’objectif).
      • Score de compatibilité : sur 100, avec des pénalités proportionnelles à l’écart de calories et de protéines par rapport à l’objectif par repas (divisé par 3).
      • Filtrage des allergènes : les plats contenant un allergène déclaré sont automatiquement exclus (score = 0).
      • Résultat : un badge visuel « Match XX% » affiché sur chaque fiche plat.
    • Synchronisation complète en temps réel

      • Chaque changement de statut d’une commande est diffusé instantanément via les WebSockets PostgreSQL.
      • La position GPS du livreur est mise à jour en direct (table driver_locations, upsert en cas de conflit sur driver_id).
      • Le client reçoit les mises à jour de position sans aucune action de sa part (push via un canal Realtime).
    • Gestion d’état distribuée (commandes groupées)

      • Génération d’un code de session unique (6 caractères alphanumériques).
      • Partage natif (Share API) vers WhatsApp, SMS, etc.
      • Chaque participant rejoint la session avec le code et remplit un panier commun synchronisé.
    • Gamification et programme de fidélité

      • Système de points transactionnel (« Écrin Coins ») calculé à partir des commandes livrées.
      • Bonus comportemental : +10 points pour les commandes éco-responsables (sans couverts).
      • 4 niveaux de statut avec déblocage progressif des récompenses.
    Technologie

    Comment il est construit

    • Architecture monorepo et frontend

      • Monorepo : les 3 applications cohabitent dans un seul dépôt (apps/ecrin, apps/course, apps/pilotage), ce qui permet une configuration partagée et un écosystème cohérent.
      • Expo Router : un routage basé sur les fichiers, pour une navigation native prévisible et des liens profonds (Deep Linking) natifs.
      • React Native : compilation native pour iOS et Android, avec des performances identiques aux applications natives (accès direct aux API matérielles : GPS, retour haptique, caméra).
      • Zustand : store global réactif, sans code superflu. Utilisé pour le panier (cartStore) avec persistance locale.
      • Squelettes de chargement : animation Animated.timing (opacité 0.3 → 1.0 en boucle) pour un chargement visuellement haut de gamme.
    • Backend et base de données : PostgreSQL

      L’infrastructure repose sur PostgreSQL, qui garantit performance, intégrité transactionnelle et évolutivité.

      • WebSockets temps réel (Postgres Changes) : multiplexage WebSocket natif. Les modifications des tables (orders, driver_locations) déclenchent des notifications instantanées aux clients abonnés. Aucun polling HTTP.
      • Row Level Security (RLS) : des politiques de sécurité au niveau des lignes. Une isolation multi-locataire stricte : un client ne voit que ses commandes, un livreur que ses livraisons, un restaurateur que son établissement.
      • Fonctions RPC et triggers PostgreSQL : la logique métier s’exécute au plus près des données via des procédures stockées, ce qui réduit la latence réseau et la charge de calcul côté client.
      • Stockage objet : les images des plats et des restaurants sont hébergées dans un bucket de stockage cloud avec des URL publiques.
    • Sécurité et gestion des identités

      • JWT (JSON Web Tokens) : authentification cryptographique avec renouvellement automatique et persistance locale chiffrée via AsyncStorage.
      • RBAC (contrôle d’accès basé sur les rôles) : 3 rôles stricts (client, driver, admin), vérifiés à la fois dans l’interface et dans les règles de la base de données.
      • Vérification du rôle à la connexion : l’application livreur rejette automatiquement tout utilisateur qui n’est pas livreur. L’application d’administration vérifie les rôles admin ou restaurant.
    • Géolocalisation

      • Client : formule de Haversine (calcul purement mathématique, sans coût d’API) pour le calcul des distances.
      • Livreur : expo-location avec watchPositionAsync (haute précision, intervalle de 5 s, distance de 10 m).
      • Suivi côté client : react-native-maps avec des marqueurs dynamiques et des tracés mis à jour en temps réel.
    Votre startup

    Vous lancez une startup ?

    Nous construisons votre MVP et restons à vos côtés, de la validation de l’idée à la levée de fonds.