RedEnvía ← Inicio

Vista técnica

Arquitectura del MVP

Resumen ejecutivo para equipos técnicos. El detalle completo está en README.md del repositorio.

Capas

┌────────────────────────────────────────────────────────────┐
│  Next.js 14 (App Router)                                   │
│  UI · API Routes · Server Actions                          │
├────────────────────────────────────────────────────────────┤
│  Dominio (src/lib)                                         │
│  pricing · matching · chain-of-custody · payments · storage │
├────────────────────────────────────────────────────────────┤
│  Procesos auxiliares                                       │
│  Socket.io (tracking en vivo)                              │
├────────────────────────────────────────────────────────────┤
│  PostgreSQL + PostGIS · Redis · MinIO/S3                   │
└────────────────────────────────────────────────────────────┘

Decisiones clave

Cadena de custodia (envíos estatales)

Cada evento de tracking calcula:

hash = SHA-256(prev_hash + shipmentId + type + actorId + payload + timestamp)

prev_hash es el hash del evento anterior del mismo envío. El admin estatal recorre la cadena y verifica integridad. La tabla está bloqueada a UPDATE/DELETE vía trigger; cualquier intento de alteración rompe la cadena.

Matching

  1. Filtrar transportistas activos con vehículo apto para el tipo de paquete.
  2. Filtrar por radio geográfico (PostGIS ST_DWithin).
  3. Si la modalidad es via_bus, buscar rutas de buses cuya geometría intersecte el par origen-destino.
  4. Rankear: score = w1·distancia + w2·calificación + w3·disponibilidad.
  5. Modo subasta: publicar a los top-N y aceptar la mejor oferta.

Multi-tramo

Un envío puede tener N tramos (legs). Caso típico: moto recoge en origen → bus interurbano cubre el trayecto largo → moto entrega en destino. El envío sólo se marca como entregado cuando todos sus legs lo están. El tracking público muestra el leg activo en cada momento.

Stack

Capa Tecnología
Frontend / BackendNext.js 14 (TypeScript)
UITailwindCSS + shadcn/ui
DBPostgreSQL 16 + PostGIS
ORMPrisma
AuthNextAuth + JWT
Tiempo realSocket.io + Redis pub/sub
AlmacenamientoS3 / MinIO
MapasMapbox
PagosInterfaz abstracta · Tigo Money / Atlántida / Tengo
← Volver Ver brief ejecutivo