Etude de cas

DropTaxi

SaaS multi-tenant de reservation de taxis pour les operateurs de taxi indiens. Un seul deploiement sert chaque tenant avec des sites web de marque, des domaines personnalises et un SEO par operateur.

164

tests reussis

5

types de vehicules pris en charge

0

deploiements pour ajouter un tenant

Page de reservation DropTaxi montrant le calculateur de tarifs et la selection de villes
Construit avec Turborepo Astro 5 SSR React Hono Turso Drizzle ORM Tailwind CSS v4 shadcn/ui Zod Vitest Fly.io

Le defi

Les operateurs de taxi avaient besoin de sites web de marque sans couts d'infrastructure par tenant

Les petits operateurs de taxi a travers l'Inde gerent leur activite par appels telephoniques et WhatsApp. Ils n'ont aucune presence web. Ceux qui en ont une paient pour un site sur mesure qui coute des milliers de roupies par mois en hebergement, et mettre a jour les tarifs ou ajouter des villes signifie appeler un developpeur.

Le client voulait une plateforme ou n'importe quel operateur pourrait obtenir un site web de reservation avec sa marque, optimise pour le SEO, en pointant un domaine et en remplissant un formulaire. Aucun changement de code. Aucun redeploiement. Les sites de reservation devaient calculer les tarifs pour les trajets aller simple et aller-retour sur cinq types de vehicules, envoyer des notifications de reservation par Telegram et se classer sur Google pour la ville cible de chaque operateur.

La contrainte : tout cela devait fonctionner sur un seul deploiement. Un serveur. Une base de code. Chaque tenant servi depuis la meme infrastructure.

Ce que nous avons construit

Une plateforme SaaS complete, du moteur de reservation au tableau de bord d'administration

Sites web de marque par tenant

Chaque operateur obtient un site web avec son nom de marque, son logo, ses couleurs de theme et son domaine personnalise. La couche SSR lit l'en-tete Host a chaque requete, resout le tenant depuis Turso et affiche le bon branding. Les visiteurs voient un site de reservation complet. Ils ne savent jamais qu'il partage l'infrastructure avec des dizaines d'autres operateurs.

Section fonctionnalites de DropTaxi montrant les capacites de branding par tenant
Calculateur de tarifs DropTaxi montrant la selection de trajet, le choix du type de vehicule et le decompte tarifaire

Moteur de tarifs partage

Un seul moteur de calcul de tarifs gere la tarification de chaque tenant. Il prend en charge les trajets aller simple et aller-retour sur cinq types de vehicules : Hatchback, Sedan, SUV, Innova et Innova Crysta. Chaque tenant definit ses propres tarifs au kilometre via le tableau de bord d'administration. Le moteur recupere les bons tarifs au moment de la requete et renvoie un decompte tarifaire instantane a l'utilisateur.

Tableau de bord super admin

Le tableau de bord sur taxi.savibm.com donne au proprietaire de la plateforme un controle total. Creer des tenants, configurer les couleurs de theme, definir les tarifs par type de vehicule, gerer les itineraires de villes et consulter les reservations de tous les operateurs. Chaque modification prend effet sur le site du tenant en quelques secondes, sans deploiement.

Reference de la plateforme DropTaxi montrant l'interface de reservation

Notifications Telegram

Chaque tenant connecte son bot Telegram. Quand un client reserve un trajet, l'operateur recoit une notification instantanee avec les details du trajet, le type de vehicule et le tarif. Aucune application a installer, aucun tableau de bord a surveiller.

SEO par tenant

Chaque site de tenant genere ses propres balises meta, images Open Graph, donnees structurees et sitemap. Quand quelqu'un cherche "reservation taxi [nom de ville]", le site de marque de l'operateur apparait, pas une page generique de la plateforme.

Integration sans deploiement

Ajouter un nouvel operateur de taxi prend trois etapes : creer le tenant dans le tableau de bord d'administration, configurer son branding et ses tarifs, pointer son DNS. La plateforme detecte le nouveau domaine a la requete suivante. Aucun changement de code, aucun pipeline CI.

Architecture

Un deploiement, plusieurs marques

Le flux de requetes

  1. 1 Un client visite svdroptaxi.com. La requete atteint une seule machine Fly.io executant Astro 5 en mode SSR.
  2. 2 Le middleware Hono extrait l'en-tete Host et interroge Turso (via Drizzle ORM) pour resoudre le tenant par domaine.
  3. 3 La configuration du tenant (nom de marque, couleurs, logo, tarifs, itineraires de villes) est chargee dans le contexte de la requete.
  4. 4 Astro rend la page avec le branding du tenant. Les composants React gerent le calculateur de tarifs et le formulaire de reservation cote client.
  5. 5 A la soumission de la reservation, la route API valide avec Zod, ecrit dans Turso et declenche une notification Telegram vers le bot de l'operateur.

Monorepo Turborepo

La base de code est divisee en packages : l'application Astro du tenant, le tableau de bord d'administration, les schemas de base de donnees partages et le moteur de calcul de tarifs. Turborepo met en cache les builds entre les packages, donc une modification du moteur de tarifs ne reconstruit que ce qui en depend.

Turso en edge

Turso fournit des repliques SQLite embarquees proches des utilisateurs. Les requetes de resolution de tenant prennent quelques millisecondes. Drizzle ORM nous donne des requetes type-safe avec validation de schemas Zod a la frontiere, et 164 tests Vitest couvrent le moteur de tarifs, la resolution de tenant et le flux de reservation.

Resultats

164

tests couvrant le moteur de tarifs, la resolution de tenant et le flux de reservation

0

deploiements necessaires pour integrer un nouvel operateur de taxi

5

types de vehicules avec tarifs independants par tenant

1

machine Fly.io servant tous les tenants depuis un seul deploiement

Nous contacter

Demarrer une conversation

Parlez-nous de votre projet. Nous vous repondrons sous 24 heures avec un plan clair, un calendrier estime et une fourchette de prix.

Base a

EAU et Inde