Skip to content
Case study

MIMAPP

This project is a comprehensive next-generation food delivery ecosystem. It consists of three independent applications, interconnected through a shared real-time PostgreSQL database, and designed to cover the entire valu…

Interfaces

Inside the product

  • MIMAPP — screen 1 of 5
  • MIMAPP — screen 2 of 5
  • MIMAPP — screen 3 of 5
  • MIMAPP — screen 4 of 5
  • MIMAPP — screen 5 of 5
Overview

The project

This project is a comprehensive next-generation food delivery ecosystem. It consists of three independent applications, interconnected through a shared real-time PostgreSQL database, and designed to cover the entire value chain: from the customer to the driver, through the restaurant operator. The 3 Applications 📱 Client Application (React Native - Mobile) The consumer-facing application. It covers the entire purchase journey, from meal discovery to real-time delivery tracking. 🚗 Driver Application "Le Coursier" (React Native - Mobile) The field logistics application dedicated to drivers. It manages ride acceptance, background GPS tracking, and delivery confirmations. 🖥️ Admin Hub "Le Pilotage" (React Native Web - Tablet/Desktop) The control center for operators and restaurant owners. It provides 7 management modules covering restaurants, menus, orders, drivers, pricing, concierge service, and dispute resolution. This Food Delivery ecosystem is not an MVP (Minimum Viable Product). It is a complete, asynchronous, reactive, and secure software foundation covering the entire food delivery value chain. The architecture of three micro-applications connected via PostgreSQL Realtime guarantees: - Horizontal Scalability: Each application can evolve independently. - Transactional Integrity: PostgreSQL ACID compliance for orders and payments. - Real-Time Experience : Near-zero latency between the driver in the field and the client on their phone. - Business Intelligence: Nutritional matching, dynamic pricing, and gamification natively integrated.

Capabilities

What it does

  • Dynamic Geolocation-Based Pricing

    - Client ↔ restaurant distance is calculated via the Haversine formula(GPS coordinates, Earth radius 6371 km), with zero external API calls. - Delivery price determined by a system of configurable pricing tiers managed by the admin (table `delivery_pricing_tiers`).

  • Smart Nutritional Matching Engine

    A real-time scoring algorithm that evaluates every dish against the user's health profile: - Caloric calculation : Mifflin-St Jeor formula (BMR adjusted by activity level and goal). - Compatibility score: Out of 100, with penalties proportional to calorie/protein deviation from per-meal target (divided by 3). - Allergen filtering: Dishes containing a declared allergen are automatically excluded (score = 0). - Result: Visual "Match XX%" badge displayed on each dish card.

  • Full Real-Time Synchronization

    - All order status changes are broadcast instantly via PostgreSQL WebSockets. - Driver GPS position is updated live (`driver_locations` table, `upsert` on `driver_id` conflict). - The client receives position updates without any action on their part (push via Realtime channel).

  • Distributed State Management (Group Orders)

    - Unique session code generation (6 alphanumeric characters). - Native sharing (Share API) to WhatsApp, SMS, etc. - Each participant joins via the code and populates a synchronized common cart

  • Gamification & Loyalty Program

    - Transactional points system ("Écrin Coins") calculated from delivered orders. - Behavioral bonus: +10 points for eco-responsible orders (no cutlery). - 4 status tiers with progressive reward unlocking.

Technology

How it's built

  • Monorepo Architecture & Frontend

    - Monorepo: All 3 applications coexist in a single repository (`apps/ecrin`, `apps/course`, `apps/pilotage`), enabling shared configuration and ecosystem consistency. - Expo Router: File-based routing ensuring predictable native navigation and native Deep Linking. - React Native: Native compilation for iOS and Android, delivering performance identical to native apps (direct access to hardware APIs: GPS, Haptics, Camera). - Zustand : Reactive global store, zero boilerplate. Used for the cart (`cartStore`) with local persistence. - Skeleton Loaders: `Animated.timing` animation (opacity 0.3 → 1.0 loop) for a visually premium loading experience.

  • Backend & Database: PostgreSQL

    The infrastructure is powered by PostgreSQL, providing guarantees of performance, transactional integrity, and scalability. - Realtime WebSockets (Postgres Changes): Native WebSocket multiplexing. Mutations on tables (`orders`, `driver_locations`) trigger instant notifications to subscribed clients. Zero HTTP polling. - Row Level Security (RLS): Row-level security policies. Strict multi-tenant isolation: a client only sees their orders, a driver only their deliveries, a restaurant owner only their establishment. - PostgreSQL RPC Functions & Triggers: Business logic executed as close to the data as possible via stored procedures, reducing network latency and client-side compute cost. - Object Storage: Dish and restaurant images hosted in a cloud storage bucket with public URLs.

  • Security & Identity Management

    - JWT (JSON Web Tokens): Cryptographic authentication with automatic renewal and encrypted local persistence via `AsyncStorage`. - RBAC (Role-Based Access Control): 3 strict roles (`client`, `driver`, `admin`) verified at both the UI level and the database rule level. - Role verification at login: The Driver app automatically rejects any non-driver user. The Admin app verifies `admin` or `restaurant` roles.

  • Geolocation

    - Client: Haversine formula (pure mathematical calculation, zero API cost) for distance calculation. - Driver: `expo-location` with `watchPositionAsync` (high accuracy, 5s interval, 10m distance). - Client Tracking: `react-native-maps` with dynamic markers and polylines updated in real-time.

Your project

Planning something like MIMAPP?

Tell us what you have in mind — a senior engineer replies within 24 hours.