La jugada ya pasó cuando decides guardarla.
En el pádel, la jugada que quieres ver otra vez ya pasó cuando te das cuenta. puntaxo graba cada cancha todo el tiempo y guarda hacia atrás: al apretar el botón junto a la cancha, se queda con el último minuto.
El jugador lo ve en su app segundos después, sin pedirle nada a nadie.
Del circuito a la app.
Es software de punta a punta, y baja hasta el dispositivo: cinco piezas que se hicieron aquí.
- Cámaras en la canchaGraban sin parar al servidor del club.
- El servidor del clubGuarda la última hora en tramos de un minuto y recorta los clips.
- El botón en la canchaUn ESP32 propio que dispara el clip.
- Check-in con NFC y QRCuatro lugares por cancha para acercar el teléfono.
- La app del jugadorSus clips, el feed del día y su club.
Cómo sale un clip.
Las cámaras mandan su video por RTSP a MediaMTX, en el mini PC del club, que lo guarda en tramos de 60 segundos. Por defecto se queda la última hora.
Al apretar el botón, un servicio en FastAPI encuentra los tramos de ese minuto y los recorta con FFmpeg, acelerado con Intel Quick Sync. Una cola en PostgreSQL alimenta al proceso que sube los clips a Cloudflare Stream y los registra en Supabase.
Para entrar al servidor desde fuera se usa Cloudflare Tunnel: el club no abre un solo puerto.

El botón.
Es un ESP32-S3 con antena externa, una tira de LEDs, una pantalla OLED y un zumbador. Se identifica por su dirección MAC, firma cada mensaje con HMAC y se actualiza por aire, todos los botones a la vez.
Encendió por primera vez en hardware real después de corregir el modo de su memoria PSRAM: octal, no quad.
Acercar el teléfono, y listo.
Cada cancha tiene cuatro lugares, cada uno con una etiqueta NFC y un QR que abren la misma dirección, con el club, la cancha y el lugar.
Después la app busca la baliza Bluetooth de esa cancha con un monitoreo de región, que funciona en segundo plano y casi no gasta batería. El registro es automático, la app avisa que sigue ahí cada dos minutos, y la sesión se cierra sola cuando deja de avisar.
Las decisiones.
Bajar el clip con el SDK del grabador.
Se descartó: Pedirle el recorte al grabador por su API.
Ese grabador no sabe recortar por tiempo desde su API. Su SDK sí, pero solo corre en x86, así que tampoco sirve una Raspberry Pi.
Apagar el Smart Codec de las cámaras.
Quitó una congelada de unos ocho segundos al inicio de cada clip.
Navegación propia en la app.
Se descartó: GoRouter.
Chocaba con los enlaces de NFC y QR cuando la app arrancaba desde cero.







