Sin instalaciones. Sin límites de tiempo. Almacenamiento seguro en Supabase y conversión automática a MP4 con FFmpeg en la nube.
Cada pieza del stack elegida con criterio. Production-ready desde el primer día.
Usa la API MediaRecorder con timeslice cada 20s para generar chunks y evitar picos de RAM. Soporta pantalla completa, ventanas o pestañas individuales.
Grabaciones largas (+8 min / +250 MB) se suben con tus-js-client en chunks de 6 MB. Si se cae la conexión, reanuda automáticamente desde el último byte confirmado.
Registro e inicio de sesión con email y contraseña gestionados por Supabase Auth. Sesión persistente con cookies HttpOnly a través de @supabase/ssr.
Tabla recordings en PostgreSQL con Row Level Security. Cada usuario solo accede a sus propias grabaciones. Políticas definidas a nivel de base de datos, no de aplicación.
Endpoint /api/recording-complete recibe la notificación de subida completa, actualiza la DB y encola el job de procesamiento. Nunca expone la service role key al cliente.
QStash entrega los jobs de procesamiento al worker externo con reintentos automáticos y backoff exponencial. Sin Redis persistente ni workers siempre activos en Vercel.
Worker Node.js independiente desplegado en Railway. Descarga el WebM, ejecuta FFmpeg (H.264, preset fast, CRF 23, faststart) y genera thumbnail. Escala a cero cuando no hay jobs.
authenticated solo puede escribir en raw-recordings. El worker usa service_role para processed-recordings. Las descargas se sirven con signed URLs de 1 hora de expiración.