Caso de estudio

DropTaxi

SaaS multi-tenant de reserva de taxis para operadores de taxi en India. Un solo despliegue sirve a cada tenant con sitios web de marca, dominios personalizados y SEO por operador.

164

tests pasando

5

tipos de vehiculos soportados

0

despliegues para agregar un tenant

Pagina de reserva de DropTaxi mostrando la calculadora de tarifas y la seleccion de ciudades
Construido con Turborepo Astro 5 SSR React Hono Turso Drizzle ORM Tailwind CSS v4 shadcn/ui Zod Vitest Fly.io

El desafio

Los operadores de taxi necesitaban sitios web de marca sin costos de infraestructura por tenant

Pequenos operadores de taxi en toda India gestionan sus negocios con llamadas telefonicas y WhatsApp. No tienen presencia web. Los que la tienen pagan por un sitio a medida que cuesta miles de rupias al mes en hosting, y actualizar tarifas o agregar ciudades significa llamar a un desarrollador.

El cliente queria una plataforma donde cualquier operador pudiera obtener un sitio web de reservas con marca y optimizado para SEO apuntando un dominio y completando un formulario. Sin cambios de codigo. Sin redespliegue. Los sitios de reserva tenian que calcular tarifas para viajes de ida y de ida y vuelta en cinco tipos de vehiculos, enviar notificaciones de reserva por Telegram y posicionarse en Google para la ciudad objetivo de cada operador.

La restriccion: todo esto tenia que funcionar en un unico despliegue. Un servidor. Una base de codigo. Cada tenant servido desde la misma infraestructura.

Lo que construimos

Una plataforma SaaS completa, desde el motor de reservas hasta el panel de administracion

Sitios web de marca por tenant

Cada operador obtiene un sitio web con su nombre de marca, logo, colores de tema y dominio personalizado. La capa SSR lee el encabezado Host en cada solicitud, resuelve el tenant desde Turso y renderiza el branding correcto. Los visitantes ven un sitio de reservas completo. Nunca saben que comparte infraestructura con docenas de otros operadores.

Seccion de funcionalidades de DropTaxi mostrando capacidades de branding por tenant
Calculadora de tarifas de DropTaxi mostrando seleccion de ruta, selector de tipo de vehiculo y desglose de tarifa

Motor de tarifas compartido

Un solo motor de calculo de tarifas maneja los precios de cada tenant. Soporta rutas de ida y de ida y vuelta en cinco tipos de vehiculos: Hatchback, Sedan, SUV, Innova e Innova Crysta. Cada tenant configura sus propias tarifas por kilometro a traves del panel de administracion. El motor obtiene las tarifas correctas en el momento de la solicitud y devuelve un desglose de tarifa instantaneo al usuario.

Panel de super administracion

El panel en taxi.savibm.com da al propietario de la plataforma control total. Crear tenants, configurar colores de tema, establecer tarifas por tipo de vehiculo, gestionar rutas de ciudades y ver reservas de todos los operadores. Cada cambio se aplica en el sitio del tenant en vivo en segundos, sin necesidad de despliegue.

Referencia de la plataforma DropTaxi mostrando la interfaz de reservas

Notificaciones por Telegram

Cada tenant conecta su bot de Telegram. Cuando un cliente reserva un viaje, el operador recibe una notificacion instantanea con detalles de ruta, tipo de vehiculo y tarifa. Sin app que instalar, sin panel que monitorear.

SEO por tenant

Cada sitio de tenant genera sus propias meta tags, imagenes Open Graph, datos estructurados y sitemap. Cuando alguien busca "reserva de taxi [nombre de ciudad]", aparece el sitio de marca del operador, no una pagina generica de la plataforma.

Incorporacion sin despliegue

Agregar un nuevo operador de taxi requiere tres pasos: crear el tenant en el panel de administracion, configurar su branding y tarifas, apuntar su DNS. La plataforma detecta el nuevo dominio en la siguiente solicitud. Sin cambios de codigo, sin pipeline de CI.

Arquitectura

Un despliegue, muchas marcas

El flujo de solicitudes

  1. 1 Un cliente visita svdroptaxi.com. La solicitud llega a una unica maquina Fly.io ejecutando Astro 5 en modo SSR.
  2. 2 El middleware Hono extrae el encabezado Host y consulta Turso (via Drizzle ORM) para resolver el tenant por dominio.
  3. 3 La configuracion del tenant (nombre de marca, colores, logo, tarifas, rutas de ciudades) se carga en el contexto de la solicitud.
  4. 4 Astro renderiza la pagina con el branding del tenant. Los componentes React manejan la calculadora de tarifas y el formulario de reservas en el lado del cliente.
  5. 5 Al enviar la reserva, la ruta API valida con Zod, escribe en Turso y dispara una notificacion de Telegram al bot del operador.

Monorepo Turborepo

La base de codigo se divide en paquetes: la app Astro del tenant, el panel de administracion, esquemas de base de datos compartidos y el motor de calculo de tarifas. Turborepo cachea builds entre paquetes, asi que un cambio en el motor de tarifas solo reconstruye lo que depende de el.

Turso en el edge

Turso proporciona replicas SQLite embebidas cerca de los usuarios. Las consultas de resolucion de tenant toman milisegundos de un solo digito. Drizzle ORM nos da consultas type-safe con validacion de esquemas Zod en la frontera, y 164 tests de Vitest cubren el motor de tarifas, la resolucion de tenant y el flujo de reservas.

Resultados

164

tests cubriendo motor de tarifas, resolucion de tenant y flujo de reservas

0

despliegues necesarios para incorporar un nuevo operador de taxi

5

tipos de vehiculos con tarifas independientes por tenant

1

maquina Fly.io sirviendo todos los tenants desde un unico despliegue

Contacto

Inicia una conversacion

Cuentanos sobre tu proyecto. Responderemos en 24 horas con un plan claro, un cronograma estimado y un rango de precios.

Correo electronico

hello@savibm.com

Ubicacion

EAU e India