Saltar al contenido
LEX
Teclado: pulsa / o Comando K para preguntar o saltar, acento grave para abrir el terminal.

LEX · el pase

Comanda

Comanda

#

Desde
Hora
Pedido

Marchar

ES · DE · EN

Volver al Lab

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

  1. Un núcleo propio en vez de bifurcar un proyecto de transporte existente.
  2. Estado de presencia y despacho en Postgres, no en una caché.
  3. 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.
  4. 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á.

Stack

Pregunta o salta

Escribe una pregunta o un nombre. La navegación es determinista — no es un chatbot.

Pulsa / o ⌘K