LoopBeat
Tu música. En todas partes.
Herramienta personal de música sin contraseña y con acceso por invitación. Pega una URL de YouTube, una búsqueda o un enlace de playlist de Spotify / Apple Music — LoopBeat descarga el audio, lo transcodifica a MP3 o AAC, lo almacena en object storage y te entrega un enlace de descarga firmado de corta duración.
Cómo está construido
De punta a punta, cada servicio conectado — de un vistazo.
Front-end
Sitio estático Astro 5 con "islands" React 19, desplegado en Vercel. El navegador solo habla con su propio origen — Vercel reescribe /api/* al backend en el servidor, manteniendo sesiones first-party.
Back-end
FastAPI (Python 3.11) en contenedor en Render. Las descargas corren como tareas en background — yt-dlp obtiene el audio, ffmpeg lo transcodifica — y pueden delegarse a un worker self-hosted en mi servidor, accedido vía Cloudflare Tunnel.
Base de datos
Neon / Postgres vía SQLAlchemy guarda solo metadatos — usuarios, sesiones, jobs, coincidencias de playlist. El audio nunca vive en la DB. Los secretos se almacenan como hashes, nunca en texto plano.
Almacenamiento de audio
Los archivos de audio viven en Cloudflare R2 bajo claves aleatorias. La reproducción y descargas usan enlaces firmados de corta duración que la app renueva, manteniendo tu biblioteca disponible sin exponer los archivos brutos.
Inicio de sesión
Sin contraseña y con acceso por invitación. Pide un magic link por email (vía Resend) o entra con passkey (WebAuthn) — en ambos casos aterrizas en la misma sesión segura, sin contraseña almacenada.
Servicios conectados
Spotify y Apple Music aportan metadatos de playlist; la YouTube Data API alimenta el autocompletado de búsqueda en vivo; yt-dlp obtiene el audio real de YouTube.
De un enlace a tu biblioteca
Cómo una canción se almacena y se sirve realmente.
- linkPega o buscaURL de YouTube / Spotify o una consulta simplearrow_forward
- downloadDescargayt-dlp obtiene el mejor audio disponiblearrow_forward
- graphic_eqTranscodificaffmpeg → MP3 o AAC a 192 / 320 kbpsarrow_forward
- cloud_uploadAlmacena en R2Subido a Cloudflare con clave UUIDarrow_forward
- vpn_keyEnlace firmadoURL firmada de corta duración para reproducir / guardar
Dentro de la app
Dashboard y búsqueda en vivo.
