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
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.
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.
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 Un cliente visita svdroptaxi.com. La solicitud llega a una unica maquina Fly.io ejecutando Astro 5 en modo SSR.
- 2 El middleware Hono extrae el encabezado Host y consulta Turso (via Drizzle ORM) para resolver el tenant por dominio.
- 3 La configuracion del tenant (nombre de marca, colores, logo, tarifas, rutas de ciudades) se carga en el contexto de la solicitud.
- 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 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.comUbicacion
EAU e India
Mensaje recibido
Revisaremos tu proyecto y te responderemos en 24 horas.
También puedes escribirnos a hello@savibm.com