Ese motor de negociación en tiempo real —no el mapa ni el botón de "pedir viaje"— es la pieza que realmente diferencia el desarrollo de un clon de InDriver del de un clon de Uber.
Construir una plataforma de este tipo implica combinar cuatro componentes que deben funcionar sincronizados bajo carga real: la app del pasajero, la app del conductor, el panel de administración y un backend con un motor de emparejamiento (matching engine) en tiempo real.
El desarrollo completo pasa por estas etapas:
La mayoría de las guías sobre "cómo crear una app como InDriver" describen, en realidad, un clon de Uber con otro logo: reserva, GPS, pago, valoración. Ese enfoque ignora la parte que hace que InDriver funcione como modelo de negocio: el pasajero fija un precio de partida, varios conductores responden con su propia oferta (tarifa, tiempo de llegada, valoración), y el pasajero elige. Es un mercado de ofertas en tiempo real, no un cálculo automático de tarifa.
Diseñar mal esa pieza —o directamente omitirla, como ocurre en la mayoría del contenido que existe hoy sobre el tema— condiciona toda la arquitectura posterior, y es justo la razón por la que este tipo de proyecto conviene encargarlo a una empresa de desarrollo de aplicaciones móviles con experiencia previa en marketplaces P2P, no a un equipo generalista.
Antes de hablar de coste o de stack tecnológico, conviene aclarar la diferencia de modelo, porque determina qué construyes primero. Si tu idea real es más cercana a una tarifa fija calculada por algoritmo que a una subasta entre pasajero y conductor, probablemente te interese directamente nuestra guía sobre como crear una app como uber, porque la arquitectura de pricing cambia de raíz.
| Criterio | InDriver (modelo de subasta) | Uber (tarifa fija/surge) |
| Quién fija el precio inicial | El pasajero propone un precio | El algoritmo lo calcula (distancia, demanda, tráfico) |
| Rol del conductor | Contraoferta con su propio precio y ETA | Acepta o rechaza la tarifa asignada |
| Pieza de backend más crítica | Motor de emparejamiento y negociación en tiempo real | Motor de pricing dinámico (surge pricing) |
| Riesgo de negocio principal | Que pasajero y conductor cierren el trato fuera de la app | Abandono por tarifa percibida como injusta |
| Comisión de la plataforma | Se calcula sobre el precio negociado, no sobre uno fijo | Porcentaje fijo sobre tarifa calculada |
Esa fila de "riesgo de negocio principal" no es teórica. En plataformas P2P que hemos desarrollado con lógica de oferta-contraoferta, es el primer problema que aparece en producción: en cuanto pasajero y conductor ven la oferta del otro, tienen un incentivo económico directo para cerrar el trato fuera de la app y evitar la comisión. Resolverlo es una decisión de arquitectura, no una cláusula en los términos de uso.
El ciclo de vida de un viaje en una app tipo InDriver se modela mejor como una máquina de estados explícita, no como un simple flag "reservado / en curso / completado". En una plataforma P2P de estructura equivalente que hemos construido, el flujo pasa por: solicitud creada → ofertas recibidas → oferta aceptada → viaje en curso → completado / disputa, con transiciones inmutables una vez confirmado un paso crítico y un registro de auditoría completo por cada cambio de estado. Ese mismo patrón sostiene tanto una plataforma de pagos P2P como una de movilidad: lo único que cambia son los campos del formulario, no el core del workflow.
Nuestra experiencia: Diseñamos un marketplace bilateral de solicitudes donde el solicitante publica un requerimiento y varios proveedores compiten con ofertas propias (precio, comisión, SLA), con la comunicación directa bloqueada hasta la confirmación del trato.
Solución: Implementamos el ciclo de vida de la solicitud como una máquina de estados finita (nuevo → ofertas → confirmación → en progreso → completado/disputa), con transiciones inmutables tras la confirmación y temporizadores de SLA controlados en el servidor —no en el cliente— para que no puedan manipularse desde el frontend.
Resultado: El modelo de comisión queda protegido a nivel de arquitectura, no de política de uso. Y como el core del workflow es el mismo, extendimos la plataforma a una segunda vertical (de pagos a logística) reutilizando el mismo motor de estados, añadiendo solo los campos de datos específicos —sin reescribir el backend desde cero.
Para la capa de comunicación en tiempo real —posición del conductor, nuevas ofertas, cambios de estado del viaje— usamos WebSockets persistentes en lugar de polling. Es la diferencia entre que el pasajero vea al conductor moverse en el mapa con normalidad o que la app parezca congelada cada pocos segundos.
| Capa | Tecnologías |
| Backend | Laravel, MySQL/PostgreSQL, Redis, Kafka, Symfony Components |
| Capa en tiempo real | WebSockets (Socket.io, Pusher) |
| Frontend / panel admin | React, Next.js, TypeScript, Redux Saga |
| Apps móviles | Kotlin (Android), Swift (iOS) o stack cross-platform |
| DevOps / infraestructura | Docker, Kubernetes, AWS/VPS, Git, Jenkins |
Kafka y Redis no son un capricho de stack: son la capa que permite procesar solicitudes de viaje, ofertas de conductores y actualizaciones de posición como eventos asíncronos, en lugar de saturar la base de datos con escrituras síncronas cada vez que un conductor se mueve.
La mayoría del contenido sobre este tema da un rango genérico y lo justifica solo con "depende de la complejidad". Con datos reales de proyectos con arquitectura equivalente —marketplace P2P de dos lados, dos apps móviles, panel de administración multi-país y capa de mensajería en tiempo real— los números se concretan bastante más:
| Paquete | Coste | Plazo | Incluye |
| Básico | $60,000 | 2-3 meses | 1 idioma, geolocalización en 1 país, sistema de valoraciones |
| Estándar | $72,000 | 2-3 meses | 2 idiomas, 2 países, mismas integraciones base |
| Enterprise | $90,000 | 2-3 meses | 4+ idiomas, 4 países, arquitectura de microservicios |
Dentro del paquete básico, la distribución del presupuesto es reveladora: el backend más el panel de administración cuestan $37,000, mientras que una única app cross-platform cuesta $28,000 y dos apps nativas (iOS + Android) suben a $44,000. El backend —no la interfaz— concentra el mayor coste individual del proyecto, precisamente porque ahí vive el motor de negociación en tiempo real. Cualquier presupuesto que reparta el coste "por número de funciones" sin diferenciar esto está simplificando de más.
La fase de descubrimiento (documentación técnica, user flow, arquitectura, diseño) es de 1 mes fijo en los tres paquetes: no es una variable que se acorta si se aprieta el presupuesto, es la base sobre la que se dimensiona todo lo demás. Si quieres comparar este rango con otros tipos de producto móvil, tenemos un desglose más amplio sobre cuanto cuesta crear una app en euros según tipo de plataforma.
La capa de verificación de conductores (KYC, documentación, validación de identidad) es otro módulo que suele infravalorarse en las estimaciones genéricas. En proyectos P2P equivalentes con integración de KYC/AML y pasarela de pago, el coste de las apps móviles se sitúa entre $36,000 y $61,000 según si es cross-platform o nativa doble, con un plazo de 2,5 a 3 meses — ese rango ya incluye la verificación de identidad, no es un extra aparte.
Registro e inicio de sesión. Por teléfono, email o cuentas de Google/Apple, con verificación por SMS o código de un solo uso.
Solicitud de viaje con propuesta de precio. El pasajero indica origen, destino y el precio que está dispuesto a pagar. El sistema envía la solicitud a los conductores disponibles en el radio configurado, y estos responden con su propia oferta.
Comparador de ofertas. El pasajero ve varias ofertas simultáneas —precio, tiempo de llegada estimado, valoración del conductor, modelo de vehículo— y elige, en lugar de recibir una única tarifa calculada automáticamente.
Viajes programados. Además de la solicitud inmediata, el pasajero puede reservar un viaje para una fecha y hora futuras, con notificación de recordatorio antes de la salida. Es una funcionalidad que casi ningún clon genérico incluye, pese a ser una de las más buscadas por quienes ya usan InDriver.
Seguimiento en el mapa vía GPS, historial de viajes con fecha, duración, precio y conductor, y sistema de valoración bidireccional tras cada viaje.
Pago integrado. La pasarela de pago se conecta del lado del servidor, con métodos habituales en el mercado español (tarjeta, Bizum donde aplique) además de las opciones internacionales estándar. Si necesitas profundizar en esta capa por separado, cubrimos el tema en detalle en nuestra guía sobre como crear una plataforma de pago online.
Verificación de identidad y de vehículo. En España, operar como conductor de una plataforma de este tipo exige la licencia VTC (Vehículo de Transporte con Conductor), regulada por la Ley de Ordenación de los Transportes Terrestres (LOTT) y sujeta a los requisitos de la DGT y de la autorización autonómica correspondiente. El panel de conductor debe capturar y validar esta documentación antes de activar la cuenta —no es un checkbox genérico de "subir carnet de conducir".
Gestión de disponibilidad. El conductor marca su estado (disponible, en viaje, en descanso), y el sistema propaga ese cambio de estado a través del motor de emparejamiento en tiempo real para que solo reciba solicitudes cuando corresponde.
Recepción y envío de ofertas. El conductor ve las solicitudes activas cerca de su posición y responde con su propio precio y ETA, o rechaza la solicitud sin penalización si no le conviene la valoración del pasajero o la ruta.
Historial de ganancias y viajes, con desglose por comisión de plataforma, y sistema de valoración del pasajero tras cada viaje.
Una app como InDriver no falla en producción por falta de funcionalidades. Falla cuando el sistema recibe carga concurrente real —hora punta, un evento en la ciudad, un fin de semana con más demanda de la esperada— y la infraestructura no estaba dimensionada para eso.
Nuestra experiencia: En un clúster de producción sin autoscaling nativo (Kubernetes autogestionado, sin cloud managed), detectamos caídas periódicas de pods causadas por una configuración incorrecta de recursos en los init containers, además de tareas programadas (cron) que colisionaban entre sí bajo ejecución simultánea y disparaban el OOM-killer.
Solución: Eliminamos los init containers innecesarios, recalculamos los requests/limits de CPU y RAM por servicio, y separamos con claridad el control plane de los worker-nodes. La lógica que dependía de precisión temporal —candidata a fallar con cron— la migramos a una arquitectura basada en workers con Kafka y Redis como capa de mensajería, para que la garantía de ejecución no dependiera del temporizador del sistema operativo. Los contenedores de procesamiento periódico quedaron con un límite de memoria de ~700MB para acotar el radio de impacto de cualquier OOM futuro.
Resultado: Eliminamos las caídas recurrentes por mala configuración de init containers y los huecos de datos causados por ventanas de cron incumplidas. El despliegue quedó unificado bajo un único Helm chart reutilizable para todos los microservicios, lo que reduce el coste de escalar la arquitectura a nuevos tipos de carga —por ejemplo, un pool de workers dedicado al procesamiento de geolocalización en tiempo real.
El mismo patrón se repite en el nivel de base de datos. En pruebas de carga sobre una plataforma con lógica de matching equivalente, encontramos base de datos, Redis y aplicación desplegados en el mismo servidor —un cuello de botella clásico donde ambos compiten por el mismo pool de recursos bajo tráfico real— y un endpoint interno de consulta de precios que se llamaba cada 10-30 segundos sin ningún tipo de caché, capaz de degradar la plataforma entera sin necesidad de tráfico externo malicioso.
Es la diferencia entre un endpoint que aguanta hora punta y uno que se cae solo con el tráfico de pruebas.
Para dimensionar esto desde el diseño y no como parche posterior, vale la pena revisar cómo se estructura la arquitectura de un marketplace bilateral desde cero, porque los cuellos de botella de un motor de emparejamiento en tiempo real son prácticamente los mismos, cambie o no el sector.
El panel de administración es el punto de control central: gestión de pasajeros y conductores, verificación de documentación VTC, configuración de comisiones por zona, disputas y reembolsos, y analítica financiera (comisión total, volumen de viajes, transacciones). Sin este panel operando desde el día uno, no hay forma de intervenir cuando aparece un conflicto entre pasajero y conductor —y en un modelo de subasta, esos conflictos son más frecuentes que en uno de tarifa fija, porque hay negociación de por medio.
Si el objetivo es validar el modelo de negocio antes de invertir en una arquitectura 100% custom, una solución preconstruida con las funciones clave ya integradas —matching engine, apps de pasajero y conductor, panel admin— permite lanzar en días en lugar de meses, con la posibilidad de ir sustituyendo módulos por desarrollo a medida a medida que el negocio lo exige. Ese mismo core de matching, dicho sea de paso, es el que reutilizan operadores que después deciden expandirse a reparto bajo demanda con una app tipo crear app tipo uber eats, sin duplicar el backend desde cero.
InDriver es una plataforma de movilidad en la que el pasajero propone el precio del viaje y varios conductores responden con su propia oferta (precio, tiempo de llegada, valoración). El pasajero elige la oferta que más le conviene, en lugar de recibir una tarifa fija calculada por el sistema.
Sí. Además de la solicitud inmediata con oferta de precio, el desarrollo debe incluir la opción de reservar un viaje para una fecha y hora futuras, con recordatorio automático antes de la salida.
Un desarrollo con arquitectura equivalente —dos apps móviles, panel de administración y backend con matching engine en tiempo real— se sitúa entre $60,000 y $90,000 para un primer lanzamiento de 2-3 meses, según idiomas, países y nivel de arquitectura (monolítica vs. microservicios).
No es un requisito del producto core. Algunos operadores añaden un bot de Telegram como canal secundario para notificaciones a conductores o soporte rápido, pero es una capa de automatización aparte del backend de matching, no un sustituto.
En España, la actividad requiere licencia VTC bajo la Ley de Ordenación de los Transportes Terrestres (LOTT), además de la autorización autonómica correspondiente. El panel de conductor de la app debe validar esta documentación antes de activar cualquier cuenta.