Herramientas07 / 12
TukTuk
Un piloto de plataforma local de transporte para una isla
- Estado
- Funciona, sin desplegar
- Rol
- Diseño y desarrollo, de principio a fin
- Para
- Pasajeros, personal de conserjería que reserva para huéspedes, y conductores.
Problema
Las pequeñas flotas de tuk-tuks de una isla se despachan por llamada y de memoria. Un piloto necesita que pasajeros, operadores y conductores compartan una imagen en vivo sin el peso de una plataforma completa de transporte.
TukTuk es un piloto de plataforma de transporte formado por una app web para pasajeros, una consola de operaciones y una app de conductores pensada primero para Android, sobre un único backend. Funciona como demo local y no está desplegado.
Caso de estudio
La app de pasajeros es una PWA, la consola de operaciones sirve a operadores y mostradores de conserjería, y la app de conductores se construye con Expo y está pensada primero para Android. Las tres hablan con un backend Fastify y PostgreSQL/PostGIS, con Redis solo para tareas y difusión.
El proyecto es un workspace pnpm con paquetes compartidos para contratos, lógica de dominio y traducciones. Es una demo local funcional para evaluar la idea, sin operación real detrás.
Arquitectura
Un backend Fastify sobre PostgreSQL con PostGIS. El estado de presencia y de despacho vive en Postgres, las notificaciones usan un outbox y un registro de entregas, y los invariantes se imponen en la propia base de datos. Redis solo gestiona tareas y difusión.
Decisiones técnicas
- Un núcleo propio en vez de bifurcar un proyecto de transporte existente.
- Estado de presencia y despacho en Postgres, no en una caché.
- Outbox más registro de entregas para las notificaciones, de modo que ninguna se pierda ni se envíe dos veces sin que se note.
- Invariantes impuestos en PostgreSQL, no solo en el código de la aplicación.
Retos y compromisos
Mantener correcto el despacho bajo carga. Una simulación con 250 conductores enviando latidos guió el diseño.
Resultados verificados
- p95 de 4,2 ms para latidos con 250 conductores simulados
- Suite de la API: 237 tests pasando; 55 archivos de test en total
- Demo local funcional, no desplegada
Los estados son factuales: nada se presenta más terminado de lo que está.