arwuchivo

Diario en vídeo de las clases de kung fu: las formas y técnicas que aprendemos, para poder repasarlas en el entreno desde el móvil.

Cómo funciona

navegador ──► Cloudflare Worker (src/) ──► R2 bucket "arwuchivo-storage"
                 │
                 └─► estáticos (public/)

Datos en R2

key qué es
data/index.json días con vídeos: { days: [{ d: "26-01-15", people, count }] }
data/days/YY-MM-DD.json vídeos de un día: { d, items: [{ id, src, thumb, title, notes, person }] }
data/leyenda.json personas y su color: { people: { Manu: { color: "Purple" } } }
videos/YY/MM/DD/<id>.webm + .jpg vídeo y miniatura
trash/… lo borrado (ver abajo). Nunca se sirve.

Años a 2 dígitos (26-01 = enero 2026) por diseño.

Borrar y la papelera

“borrar” en la app no borra de verdad: mueve el vídeo y su miniatura a trash/videos/... y guarda su ficha en trash/items/<día>__<id>.json.

Desarrollo local

  1. .dev.vars (no se sube) con UPLOAD_PASSWORD=<lo que quieras>.
  2. npx wrangler dev --port 8788 (config “arwuchivo-local” en .claude/launch.json) y abrir http://localhost:8788.
  3. El R2 local empieza vacío; se rellena con npx wrangler r2 object put arwuchivo-storage/<key> --file=<f> --local.

Si añades o quitas ficheros de public/, actualiza la lista SHELL y sube VERSION en public/sw.js. El service worker va “red primero”, así que con conexión siempre se ve lo último.

Desplegar

npx wrangler deploy

Variables (en Cloudflare → Worker → Settings): UPLOAD_PASSWORD (secreto, la contraseña de entrada) y opcional LOGIN_HINT (pista en el login; vacía para no mostrar ninguna).