Todas las obras

Plataforma·MMXXV — MMXXVI

Compusof Tools

Una bitácora de campo que funciona sin señal

Año
MMXXV — MMXXVI
Rol
Diseño e ingeniería

I·Contexto

Los técnicos reportaban incidentes por WhatsApp, muchas veces dentro de sitios sin señal. Las fotos se perdían en el chat y cada reporte se reescribía a mano.

II·Lo que hice

  1. I

    Una base de datos real dentro del navegador, para que nada dependa de la red.

  2. II

    Un asistente que funciona con cualquier proveedor de IA, o sin ninguno.

  3. III

    Reportes que se comparten a WhatsApp con plantillas que cada técnico ajusta.

Cómo está hecho

SQLite en el navegador
SQLite compilado a WebAssembly, guardado en el almacenamiento privado del navegador (OPFS) y corriendo en un Worker, para que una consulta nunca congele la pantalla de un teléfono de gama media.
Consultas reactivas
Cada consulta sabe qué tablas lee y se repite sola cuando cambian. Los avisos esperan al commit: una transacción revertida no toca la interfaz.
Migración sin pérdidas
La app empezó en IndexedDB. La migración copia por páginas, sólo lee de la base vieja, se reanuda si el teléfono se apaga y no se da por terminada hasta que los conteos coinciden.
IA local
OpenAI, Gemini, Claude, Groq o la IA integrada de Chrome. Sin ninguno, un modelo abierto corre en la GPU del teléfono con WebGPU y nada de lo que escribe el técnico sale del dispositivo.
Búsqueda híbrida
El conocimiento técnico se busca por texto completo y por vectores dentro de la misma SQLite, combinados por fusión de rangos. El texto responde desde el primer momento; los vectores llegan después y sólo mejoran el resultado.
Fotos y caché
ImageMagick en WebAssembly reduce cada foto en el teléfono. El service worker nunca guarda respuestas de IA y sólo descarga el motor de modelos la primera vez que se usa.

III·Lo que aprendí

“La primera vez que construí para las personas que tenía al lado.”

Herramientas

Vue 3·TypeScript·SQLite WASM·WebGPU·Workbox·AI SDK

Siguiente obra

Akelarre

Documentos legales, de la captura a la firma

Contacto

Tus datos solo se usan para responderte. Lee el aviso de privacidad.