Investigación y documentación

Documentación · TROCHA

22 archivos markdown del case de estudio (producto, UX research, IA, flujos, design system, handoff…).

En esta página Day brief — 2026-08-05 — ALS-2 0%

Day brief — 2026-08-05 — ALS-2

Restricciones (LOAD)

  • Complejidad: Nivel 2 (no L3 consecutivo tras FIRME)
  • Sector: Logística / última milla (cola memory)
  • No: legal, mayores, salud AP, museos, cocinas; no SaaS legal FIRME; no indigo SENDA; no parchment forest
  • Craft ≥ FIRME densificado; UX Paper ≥ 8; JWT multi-rol

Concepto

CampoValor
NombreTROCHA
Eslogan”La ruta clara. El reparto, en trocha.”
TipoPWA/web consola microflota última milla
RolesDISPATCHER + COURIER (JWT)
EstiloIndustrial signage · asphalt × signal amber × chalk
TipoSpace Grotesk + IBM Plex Sans

Must-have

Home · Login · Lista paradas ops · Detalle + estado · Nueva parada · Ruta courier mobile · empty/error

00-paper-reference.md

Abrir documento

Referencia Paper — TROCHA

CampoValor
File ID01KZ8BMSCGXN5QW4PEFZHCYAKD
URLhttps://app.paper.design/file/01KZ8BMSCGXN5QW4PEFZHCYAKD
NombreTROCHA — Daily UX 2026-08-05
Artboards8 UX + DS + Home + Login + 3 dispatcher + 2 mobile + 2 states + offline/volumen + 5 labels §

Mapa canvas

§BandaContenido
1UX PROCESSUX-00…07
2DESIGN + PUBLICDS · Home · Login
3DISPATCHERStops · Detail · New
4COURIER MOBILELogin · My stops
5STATESEmpty · Error · Offline + volumen día

01-project-definition.md

Abrir documento

01 — Definición TROCHA

Identidad

  • Nombre: TROCHA (camino / vía estrecha de trabajo — la ruta operativa del día)
  • Eslogan: La ruta clara. El reparto, en trocha.
  • Una frase: Consola web multi-rol para microflotas de última milla (ops + mensajero).
  • Sector: Logística / última milla urbana
  • Tipo: Web responsive + PWA-ready (L2)
  • Plataforma: Web desktop ops + mobile courier
  • Mercado: ES / microflotas 2–15 riders
  • Idioma UI: Español

Problema

Principal (hipótesis de diseño, no investigación de campo): coordinadores de microflota pierden el hilo de paradas entre WhatsApp, Excel y llamadas. Coste: reentregas, clientes sin paquete, mensajeros sin siguiente parada clara. Oportunidad: un solo estado de verdad JWT-scoped.

Objetivos

  • Negocio: activación de ops en <10 min; retención semanal de uso lista.
  • Usuario ops: ver y asignar paradas sin chat.
  • Usuario courier: 1-tap estado en ruta.
  • No objetivos v1: tracking GPS live, facturación, portal shipper B2B, routing optimizado.

Métricas

North Star: paradas con estado actualizado el mismo día de creación. Activación: 1ª parada creada. Retención: ops 3+ días/semana.

02-ux-research-strategy.md

Abrir documento

02 — UX Research & modelo operativo (microflotas)

Método: investigación secundaria + síntesis operativa. No son entrevistas de campo reales.
Fuentes citables abajo. Cada hallazgo se marca: comprobado (secundario) / supuesto / hipótesis / decisión de diseño.

1. Preguntas de investigación (cerradas en esta ejecución)

  1. ¿Cuántas paradas/día gestiona una microflota / mensajero de cargo bike en ciudad densa?
  2. ¿Qué implica offline (cobertura irregular en sótanos, parking, casco antiguo) para el courier?
  3. ¿Qué debe hacer el producto hoy (L2) con esas respuestas?

2. Hallazgos — volumen de paradas

FuenteDatoTipo
Microhub + e-cargo bike pilots (p. ej. resúmenes de NYC DOT / estudios microhub)~4–8 viajes/día × ~5 entregas/viaje → orden 20–40 paradas/día por bici en programas densosComprobado (secundario agregado)
Modelos de ruta cargo e-bike en literatura (p. ej. ETRR 2019, escenarios de densidades)Rutas de referencia con ~8 stops en tramos cortos; capacidad de bultos limita carga, no el “tapping” de estadoComprobado (secundario)
Flotas van/camión urbana (fleet last-mile)80–150 stops/día en van — no es el target de microflota TROCHAComprobado (contexto; fuera de persona)
Ops microflota 2–15 riders (modelo de producto)Coordinador ve 15–80 paradas/día en total flota; courier individual 8–25 paradas/turno en B2B ligero/localSupuesto de diseño calibrado por secundarios
Decisión TROCHA L2KPI de volumen del día en consola ops: total, por estado, % entregadas. Seed ≥ 12 paradas del día para lista creíbleDecisión de diseño

Implicación producto (implementada):

  • Endpoint y UI de stats del día (no solo lista plana).
  • Lista ordenada por urgencia operativa (en ruta → asignada → pendiente → entregada/fallida).
  • Copy de journey y JTBD anclado a “turno con muchas paradas”, no a flota van de 120 stops.

3. Hallazgos — offline

HallazgoTipo
Mensajeros pierden red en sótanos, patios interiores, parkings y tramos de casco antiguo (patrón operativo conocido en last-mile; no medido aquí con telemetría)Hipótesis fuerte / supuesto de campo
Actualizar estado debe poder encolarse y sincronizar al recuperar red; no bloquear el turnoDecisión de diseño
Listado de la ruta del día debe ser legible offline desde última sync (caché local)Decisión de diseño
Conflictos de estado concurrente (ops + courier) → last-write-wins en L2; documentar riesgoDecisión de diseño (L3: versionado)

Implicación producto (implementada):

  • Banner offline / en cola.
  • Caché de paradas en localStorage tras cada listado OK.
  • Cola de PATCH status si navigator.onLine === false o fallo de red; flush en online.
  • Detalle de parada usable desde caché si GET falla.

4. Personas (actualizadas con modelo operativo)

Nora Aguilar — DISPATCHER (ops)

CampoValor
RolCoordinadora microflota 4–8 mensajeros
Volumen~20–60 paradas/día flota (supuesto)
DevicesLaptop + móvil
NecesidadKPIs del día + asignar sin WhatsApp
Cita (sintética)“Si no veo cuántas van en ruta, llamo a todo el mundo.”

Hugo Serra — COURIER

CampoValor
RolCargo bike
Volumen~10–20 paradas/turno (supuesto calibrado)
DevicesMóvil, guantes, sol
Necesidad1 tap estado; funciona sin red un rato
Cita (sintética)“En el parking del centro se me cae el 4G; igual tengo que marcar entregado.”

5. JTBD

Funcional: Cuando empiezo el turno con muchas paradas, quiero un listado con estado y volumen del día, para no repreguntar por chat.
Emocional: Reducir ansiedad de “¿se me ha perdido un paquete?”.
Social: Parecer flota profesional frente a comercios B2B locales.

6. Stories Must (con AC)

IDHistoriaPrioridadCriterios de aceptación
E1Login JWT multi-rolMustToken con role DISPATCHER|COURIER
E2Ops lista + stats díaMustTotales por estado del día calendario
E3Ops crea y asignaMustPENDING o ASSIGNED con courierEmail
E4Courier cambia estadoMustIN_TRANSIT / DELIVERED / FAILED
E5Offline enqueue statusMustSin red, estado queda en cola y se reintenta
E6Lista cache offlineMustSin red, se muestran últimas paradas cacheadas

7. Journey (ops + courier) — offline branch

  1. Login ops → stats día → crea paradas
  2. Courier login → ve asignadas (cache al cargar)
  3. En sótano: marca DELIVERED offline → banner cola
  4. Sale a la calle: online → flush → ops ve DELIVERED

8. Fuentes (secundarias)

  • Springer ETRR: Measuring delivery route cost trade-offs between electric-assist cargo bicycles and delivery trucks (2019) — escenarios de densidades y stops.
  • Microhub / e-cargo summaries (NYC DOT y estudios microhub): órdenes de magnitud entregas/hora y trips/día.
  • Last-mile fleet guides: van 80–150 stops/día como contraste de no-persona.

9. No inventado

No se afirman entrevistas, NPS de clientes reales ni telemetría de flotas TROCHA. El seed y la UI son demo realistas, no datos de un cliente productizado.

03-information-architecture.md

Abrir documento

03 IA

/ · /login · /app/stops · /app/stops/new · /app/stops/:id Roles: DISPATCHER (CRUD paradas) · COURIER (ver asignadas + PATCH estado limitado)

04 Flujos

Login → list → create (ops) → assign → courier IN_TRANSIT → DELIVERED Errores: 401, 403, empty list, red 503 UI

05 — Datos

User: id, email, passwordHash, name, role(DISPATCHER|COURIER) DeliveryStop: id, code, address, recipient, notes, status(PENDING|ASSIGNED|IN_TRANSIT|DELIVERED|FAILED), dispatcherId, courierId?, timestamps

06 Stack

Angular + Tailwind · NestJS + Prisma · Neon Postgres · JWT Bearer Puerto API: 3005

07-creative-direction.md

Abrir documento

07 Creativa

Mood: industrial signage. Asphalt #121417 · Signal amber #F5A623 · Chalk #F4F2EC · Steel #3A4048 Space Grotesk (display) + IBM Plex Sans (UI). No fintech neón, no parchment legal.

08-design-system.md

Abrir documento

08 DS

Tokens: bg, surface, ink, primary amber, asphalt, border. Buttons: ink primary, amber CTA. Badges: PENDING/ASSIGNED/IN_TRANSIT/DELIVERED/FAILED.

09-content-guide.md

Abrir documento

09-content-guide

10-accessibility.md

Abrir documento

10 A11y

WCAG 2.2 AA target: contraste amber/ink, labels en forms, focus visible, no color-only status (badge + text)

11-privacy-security.md

Abrir documento

11-privacy-security

12-analytics

13-qa-test-plan

14 Handoff

Repo: trocha-app · Neon proud-tooth-29711833 · Demo ops@trocha.log / ruta@trocha.log · password123 API: GET/POST /api/stops · PATCH /api/stops/:id/status · POST /api/auth/login

15-roadmap

16-interaction-specs.md

Abrir documento

16-interaction-specs

17-prototype-map.md

Abrir documento

17-prototype-map

18-completeness-audit.md

Abrir documento

18 Completeness

EntregableEstado
Docs 00–20
Research volumen + offline (docs/02) → producto✅ stats/day + offline queue
Paper hi-fi + UX + estado offline✅ artboard 10
Neon + seed 14 paradas
Angular JWT + cache/cola
Smoke GET/POST + stats
Registry + Excel + memory
Sin “próximos pasos” de producto abiertos✅ (CRON §1.1)

19-backlog-completo.md

Abrir documento

19-backlog-completo

20-implementation.md

Abrir documento

20 Implementation notes

Apps: ~/orca/trocha-app · API :3005 · Web :4200

Research → features (misma iteración)

HallazgoImplementación
Volumen día courier 10–20 / flota 20–60GET /api/stops/stats/day + KPIs en lista; seed 14 paradas
Offline en parking/sótanosOfflineQueueService: cache lista, cola PATCH status, flush on online
Orden operativoLista ordenada IN_TRANSIT → ASSIGNED → PENDING → FAILED → DELIVERED

Demo

ops@trocha.log / ruta@trocha.log · password123