2026en producciónrepo privado
Registro de café
Bitácora de extracciones V60 sobre Cloudflare Workers y D1
Método 4:6 de Tetsu Kasuya, una variable por extracción. App y API en el mismo Worker, datos en D1, fotos en R2 y sesión por cookie HttpOnly; y el mismo build, empaquetado como app Android con plugins nativos propios.
La regla del experimento es cambiar una sola variable entre extracciones y ver qué pasa; el software solo existe para que esa regla se pueda cumplir. El servidor calcula lo que puede calcular —el reparto escalado a partir de la receta y el agua real, el ratio, los días de tueste— y el cliente no manda nada de eso: si lo mandara, dos bitácoras acabarían discrepando.
Que la app y la API compartan origen no es cosmético: elimina CORS de raíz y es lo que permitió sacar el token de `localStorage` y meterlo en una cookie `HttpOnly`, `SameSite=Strict`. El JavaScript ya no puede leerla, así que un XSS no se lleva el token, y otro sitio no puede provocar una escritura desde tu navegador. Sin secreto configurado, el Worker falla cerrado: no autoriza a nadie.
La app nativa no es otra app: es el mismo build de Nuxt dentro de Capacitor, con tres plugins en Kotlin para lo que la web no alcanza. El cronómetro de la extracción vive como notificación en curso en la pantalla de bloqueo, y el aviso de valorar la taza es una alarma de despertador, porque la alarma exacta normal llegaba hasta 48 segundos tarde con el ahorro de batería del fabricante.