Saltar al contenido

Expediente 06 · Seguridad vial

MANEJO COMENTADO

Una plataforma offline-first que convierte cada curso de manejo comentado en evidencia auditable: audio, GPS, fotografías, puntaje e informes.

  • Kotlin
  • Jetpack Compose
  • Room
  • WorkManager
  • SvelteKit
  • NestJS

El reto

Un curso de manejo comentado ocurre dentro de un vehículo, a menudo con señal inestable, y mezcla seguridad vial con identidad, voz, ubicación, fotografías, firmas y calificación. El reto no era producir otra constancia, sino convertir una sesión irrepetible en evidencia defendible ante una auditoría sin distraer al instructor ni exponer datos sensibles.

Identidad de Manejo Comentado con una vía iluminada y un recorrido GPS
La identidad pública del producto declara el contrato con claridad: evidencia auditable, con o sin señal.

El enfoque

Diseñé la experiencia Android como una máquina de estados offline-first respaldada por Room, WorkManager y almacenamiento protegido en el dispositivo. Una API NestJS contract-first recibe evidencia inmutable, recalcula el puntaje y envía las discrepancias a revisión humana; SvelteKit reúne audio, GPS, fotografías y eventos para revisar, emitir y verificar públicamente con alcance limitado.

Decisiones clave

  1. Modelar la sesión como una máquina de estados explícita y conservar la evidencia original separada de cada conclusión derivada.
  2. Capturar primero en Room, cifrar lo sensible con Android Keystore y sincronizar de forma idempotente por huella de contenido.
  3. Dar poderes distintos al enlace de evidencia y al QR impreso: uno abre el detalle autorizado; el otro solo verifica autenticidad.

Arquitectura técnica

Arquitectura full stack diseñada y construida de punta a punta por mí.

  1. 01 Aplicación de campo Kotlin · Compose · Room

    Una máquina de estados recuperable captura la sesión completa sin conectividad.

  2. 02 Contrato y dominio OpenAPI · NestJS

    Un contrato une las superficies; el servidor aplica roles y recalcula resultados.

  3. 03 Custodia de evidencia PostgreSQL · Hash-addressed files

    Cargas originales, archivos inmutables, huellas y reglas versionadas conservan la auditoría.

  4. 04 Revisión y entrega SvelteKit · Mapbox · WaveSurfer

    El portal alinea recorrido, sonido y eventos antes de emitir un informe revocable.

Módulos

De qué está hecho el producto, tal como lo dividen sus propias pantallas.

  • 01 Agenda de campo

    Sesiones asignadas, paquetes offline y altas provisionales cuando la operación cambia.

  • 02 Autorización y preoperacional

    Autorización versionada, identidad, firmas y decisión de aptitud del vehículo.

  • 03 Sesión guiada en vía

    Tres fases con audio continuo, GPS, fotografías, peligros y calificación.

  • 04 Evidencia offline

    Captura local-first, almacenamiento cifrado y sincronización reanudable.

  • 05 Sala de revisión

    Una línea de tiempo que sincroniza audio, recorrido, fotos, eventos y cambios de nota.

  • 06 Emisión y verificación

    Informes revocables y un QR limitado que verifica la autenticidad del papel.

  • 07 Portales de cliente y administración

    Programación, cuentas, plantillas y acceso a resultados limitado por empresa.

Antes → después

  • Antes

    Una constancia firmada con poca evidencia detrás.

    Después

    Audio, GPS, fotos y decisiones ligados a una sesión trazable.

  • Antes

    Trabajo de campo bloqueado cuando desaparece la señal.

    Después

    La sesión completa funciona offline y sincroniza después.

  • Antes

    Una nota de campo aceptada como verdad final.

    Después

    Recálculo independiente en servidor y resolución humana de discrepancias.

Tecnologías

  • Kotlin
  • Jetpack Compose
  • Room
  • WorkManager
  • SvelteKit
  • NestJS
  • PostgreSQL
  • OpenAPI

El resto de la caja

  • Hilt
  • CameraX
  • MediaRecorder
  • Fused Location
  • Android Keystore
  • Retrofit
  • Prisma
  • WebSockets
  • Mapbox
  • WaveSurfer
  • QRCode
  • Puppeteer
  • Argon2

Marcas de Simple Icons; los conceptos sin marca están dibujados en casa.

Bitácora

sept 2026 → sept 2026 · 1 meses activos

112 commits
1 repositorio
1 meses activos
sept 2026 Mes más intenso: sept 2026 · 112 commits sept 2026
  • platform app · 112 commits sept 2026 → sept 2026

En el árbol

  • 19 rutas
  • 16 controladores de API
  • 17 modelos de datos
  • 11 migraciones
  • 31 archivos de prueba
  • 126 archivos fuente nativos
  • 468 archivos versionados

Leído del historial Git local el 6 oct 2026. Solo agregados.

El resultado

La versión actual cubre el recorrido técnico desde la programación y la captura Android hasta la sincronización, la revisión web, la emisión revocable y la verificación pública de autenticidad. La foto del repositorio reúne 103 commits, 28 rutas y handlers web y 30 archivos de prueba entre la app nativa, la API y el portal, mientras el producto avanza en beta interna.

Código privado — este archivo comparte el razonamiento, no el fuente.