Software que sigue funcionando cuando nadie lo mira.
Desarrollador full-stack. Sistemas distribuidos, dispositivos en campo e interfaces para datos en vivo.
Ver los proyectosEl último sismo en el Perú
Lo vio RemezónMis apps, respondiendo ahora
Lo que estoy viendo y oyendo
Toca cualquiera para verlo por dentro.
Cada técnico marca donde trabaja, y sus horas salen solas.
Empezó como mi tesis de SENATI, con mi compañera: un código QR pegado en cada embarcación, que el técnico escaneaba al subir y al bajar. Así se supo cuántas horas pasaba cada uno en cada barco sin que nadie las anotara a mano. Bitácora es esa idea rehecha para cualquier lugar de trabajo.
El técnico marca con un QR, un código de barras, una etiqueta NFC o en un quiosco, y confirma con la huella de su teléfono. Si no hay señal, la marca espera guardada y sale sola después. Nadie puede marcar por otro ni cambiar lo que se marcó: si falta una salida, el propio trabajador confirma la corrección. De ahí salen el registro de asistencia que pide SUNAFIL y lo que se le cobra a cada cliente, que el cliente firma desde un enlace.
Probar la demostración · Cómo empezó
Es un producto de Kip-Up. La demostración es de una empresa inventada: entra con admin@costasur.demo y la clave bitacora-demo.
React · NestJS · PostgreSQL · Capacitor
Datos de ejemplo
Los sismos del Perú en vivo, a su profundidad real.
Los sismos del Perú en vivo y en 3D, cada uno a la profundidad donde empezó. Los datos son los reportes del IGP y la página los vuelve a pedir cada minuto. Si tocas un sismo, la cámara baja hasta él.
Debajo del relieve están los 5 937 sismos fuertes que hubo desde 1973. Mirados de costado dibujan la placa de Nazca: entra bajo la costa, pasa por debajo de los Andes y sigue hasta más de 600 km de hondo, cerca de la frontera con Brasil.
La vista es el corte real: los 188 sismos de magnitud 6 o más desde 1973, en el orden en que pasaron.
Nuxt 4 · Vue · TresJS · three.js
Boletas y facturas que llegan solas a SUNAT.
Facturación electrónica directa a SUNAT, escrita desde cero: arma el comprobante, lo firma con el certificado del negocio, lo envía y guarda la constancia.
El envío no frena la venta: la API numera y responde al momento, y un proceso aparte lo manda a SUNAT y reintenta si el servicio cae. La base de datos se encarga, fila por fila, de que cada empresa vea solo lo suyo.
Producto de Kip-Up. Simulación con una panadería inventada en el entorno de pruebas de SUNAT; todavía sin un RUC real en producción.
NestJS · PostgreSQL con RLS · UBL 2.1 · XML-DSig
Datos de ejemplo
Mis doramas, armados como un guion coreano.
Mi lista de doramas, hecha como un guion coreano: cada drama es un libreto engrapado, lo que ya salió y me falta va con resaltador, y cada ficha dice en qué plataforma está en Perú.
La clave de TMDB no viaja en la app: la guarda un servidor en Node sin dependencias, que responde siete rutas fijas ya en español. En español, TMDB devuelve muchos títulos y actores coreanos en hangul, y el servidor elige el inglés antes que dejar algo ilegible. La semana agrupa los dramas como la tele coreana, por los días en que salen.
Grabación de la web con una lista de prueba. También hay app de Android. No tiene episodios: cada ficha lleva a donde se pueden ver legalmente.
Svelte 5 · TypeScript · Capacitor · Node · TMDB
Mi lista de anime, con aviso cuando sale el capítulo.
Mi lista de anime: en qué episodio voy de cada uno, el calendario de estrenos en mi hora y dónde verlo legal. En Android me avisa cuando sale el siguiente.
AniList permite 30 consultas por minuto, así que cada respuesta se guarda un rato y dos pantallas que piden lo mismo comparten la consulta. Los avisos se programan en el propio teléfono con las fechas de estreno, sin servidor. Las sinopsis llegan en inglés y Google las traduce una sola vez por anime.
Grabación de la web con una lista de prueba. También hay app de Android.
Svelte 5 · TypeScript · Capacitor · AniList GraphQL
El pedido pasa de la mesa a la cocina al instante.
El pedido pasa de la mesa a la cocina y a la caja al momento, con plano de mesas, pantalla de cocina e impresión de tickets.
La cuenta se divide por personas o por productos y el descuento de stock es idempotente dentro de una transacción. La imagen se publica por rama y el servidor se actualiza solo.
Producto de Kip-Up. Simulación con una cevichería inventada; fotos de los platos de Wikimedia Commons (créditos).
Next.js · Prisma · Socket.IO · ESC/POS
Datos de ejemplo
Un vuelo al amanecer sobre las líneas de Nazca.
Un vuelo al amanecer sobre la pampa de Nazca. Las figuras están tapadas por la arena: el cursor las va descubriendo, y cuando aparece casi entera, la línea se termina de trazar sola.
El colibrí, la araña y el mono están dibujados a partir de fotos aéreas como una sola línea cerrada que no se cruza, igual que los geoglifos reales. Todo es código: el terreno, las figuras, el cielo y las fuentes, sin imágenes.
La vista es el colibrí con su trazo real, el mismo de la escena.
Svelte 5 · Threlte · three.js
Cuánto vendió cada video de TikTok, en soles.
Del vídeo de TikTok a la venta en soles: el taller donde nace cada vídeo con su código, los mensajes que llegan por cada anuncio y, cada mes, lo que vendió cada vídeo.
Los avisos de TikTok llegan firmados y se comprueban antes de tocar la base, y cada negocio ve solo lo suyo porque lo impone PostgreSQL. La regla de las 48 horas de TikTok la hace cumplir el servidor, y a TikTok solo vuelven las ventas, cifradas y nunca de salud.
Producto de Kip-Up, en demo. Simulación con la misma cevichería inventada de Comandas; TikTok, en modo de pruebas.
NestJS · PostgreSQL con RLS · React · TikTok API for Business
Datos de ejemplo
La letra de la canción, encima del juego.
Letras sincronizadas que flotan encima de cualquier ventana de Windows, juegos en pantalla completa incluidos, y se resaltan línea a línea con la música.
La reescribí en Rust, sin Electron ni un navegador dentro: pesa 20 MB en vez de 392 y corre en un solo proceso. Le pregunta a Windows qué está sonando, así que funciona con Spotify o con cualquier reproductor sin conectar nada, y el romaji de las canciones en japonés se calcula en local.
Ver el código · Descargar para Windows
Código abierto. La letra de la vista es inventada.
Rust · Windows.Media.Control · romaji sin conexión
Para cuando le doy a «iniciar» tarde.
Salgo a caminar y a medio camino me acuerdo de darle a «iniciar». km 0 graba como Strava y, si empecé tarde, trae de Health Connect el tramo que ya había caminado y pone la placa KM 0 donde de verdad salí.
Graba con la pantalla apagada desde un servicio en Kotlin, y cada punto se escribe en un archivo apenas llega: si Android cierra la app a mitad de camino, la actividad se guarda con lo que había. El tramo de antes sale de un recorrido de Health Connect o de los pasos; si no hay ninguno, se dibuja en el mapa.
Capturas de la app en el emulador de Android.
Svelte · Capacitor · Kotlin · Health Connect · MapLibre
Mi mascota, en una cueva de bloques.
Mi mascota en la web: un ajolote de bloques que vive en su cueva. Donde apuntes, la cámara enfoca; si le haces clic, da una voltereta y cambia de color.
Todo es código: la cueva son 6627 bloques pintados píxel a píxel, sin una sola imagen. La hice primero en React y la rehice en Svelte: pesa un tercio menos.
Como en el juego, el azul es el raro: sale una vez de cada doce clics.
Svelte · three.js · Threlte · GLSL
Para que una IA lea un manual de 3 000 páginas.
Un servidor MCP para que un agente de IA le pregunte a un PDF de miles de páginas y reciba unos 400 tokens de evidencia con el número de página.
Responde en 25 ms, sin red ni claves de API, y el agente recibe la evidencia que necesita en vez de leerse el manual entero. Tiene 133 pruebas en la integración continua y licencia MIT.
Código abierto. El diálogo de la terminal es un ejemplo.
Rust · Model Context Protocol
La web de un creador de contenido, contada al bajar.
El portafolio de un creador de contenido, contado al bajar: su kit de grabación en 3D se abre pieza a pieza, un editor simulado monta un vídeo y sus trabajos pasan en un iPhone.
Todo lo que se mueve cuelga de un solo reloj, el del scroll: bajar y subir dan exactamente lo mismo. Abrir la página pesa 256 kB; el 3D, los vídeos y el editor llegan después.
Hecha para Sebastian Murazzo, creador de contenido. En desarrollo.
Vite · TypeScript · three.js · Anime.js
El sistema con el que trabaja cada día.
El sistema con el que un centro de terapias con varias sedes trabaja todos los días: agenda por especialista, historia de sesiones, un CRM y comprobantes electrónicos ante SUNAT, en un solo lugar.
La facturación electrónica pasa por Tefacturo y Rapifac, y se entra con la cuenta de Google. Hay roles y permisos, tableros con indicadores y reportes en PDF y Excel. El sistema anterior, en PHP, siguió funcionando en paralelo mientras se migraba por etapas.
Capturas de una copia levantada aparte, con la marca cambiada y pacientes generados por los datos de prueba: nadie de ahí existe.
Django REST Framework · React · PostgreSQL · Redis
Hago sistemas que siguen funcionando cuando nadie los mira, desde el teléfono del técnico hasta el servidor.