← RetourMobile & Infra
Bolt14,20 €Meilleur prix
Heetch15,80 €
Uber16,40 €
Citygo15,10 €

Digster

Le problème

Comparer le prix d'une même course d'un VTC à l'autre oblige à ouvrir les applications une par une et à saisir le même trajet à chaque fois — alors que l'écart de prix entre deux d'entre elles dépasse souvent 30 %.

La solution

Une seule saisie du trajet, tous les prix affichés côte à côte en quelques secondes, et un renvoi direct vers l'app choisie. Développée seul de bout en bout : mobile, API et infrastructure de cartographie.

RésultatApp solo de bout en bout, publiée sur l'App Store et Google Play (build EAS).

React NativeFastAPIMapLibreCloudflare Workers
Comparateur

Tous les VTC comparés en une saisie

Un seul trajet renseigné, et Digster renvoie les prix côte à côte — puis ouvre directement l'application choisie.

  • Bolt
  • Uber
  • Heetch
  • FreeNow
  • Allocab
  • Blacklane
  • Citygo
  • G7
Sous le capot

Comment ça marche

L'app interroge les APIs des VTC en parallèle via un backend FastAPI que j'ai développé et hébergé (Render), pendant qu'elle affiche la carte en direct — MapLibre en natif, avec ses propres tuiles servies par un Worker Cloudflare plutôt que par Google Maps. Front Expo / React Native, l'ensemble développé avec Cursor.

App mobileReact Native · Expo
APIFastAPI
APIs VTCUber · Bolt · Heetch · Citygo · G7
CartographieApple Maps (iOS) · MapLibre + Cloudflare (Android)
Les morceaux délicats
01Comparaison

Un trajet, tous les prix en parallèle

L'adresse de départ et d'arrivée est géocodée une fois (Photon, Nominatim en secours), l'itinéraire calculé par OSRM, puis le backend interroge les fournisseurs en parallèle : estimation Uber exacte via OAuth quand le compte est lié, estimations et deep links pour Bolt, Heetch, Citygo, G7. Les prix reviennent groupés et s'affichent côte à côte sur la carte.

02Cartographie

Sa propre pile de cartes, sans Google

La carte tourne sur MapLibre en natif, alimentée par des tuiles servies via un Worker Cloudflare (tiles.digster-app.com) qui relaie OpenFreeMap — pas de facturation Google au chargement, pas de SDK propriétaire embarqué. RN Maps reste en repli si MapLibre échoue sur un appareil.

03Le plus costaud

Lecture des reçus VTC en cascade OCR

Deux entrées : l'API Gmail (OAuth lecture seule, échange de jeton côté backend) qui récupère les mails de reçus tout seul, ou un PDF / une photo déposés à la main. pypdf et Pillow préparent le document, puis une cascade d'OCR monte en puissance seulement si besoin — Tesseract en local, OCR.space, Google Vision, Gemini Flash — jusqu'à ce qu'un montant fiable sorte. receipt_parser isole le prix, le fournisseur et la date, et la course rejoint l'historique.

04Comptes

Auth Digster et VTC, cloisonnées

Firebase Auth gère le compte Digster (Apple, Google, email, téléphone), les jetons vivent dans le SecureStore de l'appareil. Rattacher un compte VTC est une étape à part : l'OAuth Uber passe par auth.uber.com et transite par le backend, l'app ne détient jamais les secrets Uber. Les boucles OAuth se referment sur des deep links digster://.