Mobile App
SnagMusic
SnagMusic es una aplicación móvil de música que uso todos los días en el carro. Nació como proyecto personal para resolver algo simple: no querer pagar una suscripción de streaming, y terminó siendo una app completa con descarga offline, playlists y reproducción en segundo plano.
Aplicación móvil
La app está construida con React Native y Expo. Permite buscar canciones, reproducirlas en streaming o descargarlas para escuchar offline. Incluye gestión de playlists, biblioteca personal con favoritos y reproductor con controles en la barra de notificaciones y pantalla de bloqueo.
La base de datos local usa SQLite para almacenar la biblioteca offline, y se sincroniza con el backend cuando hay conexión. El estado de la app se maneja con Zustand y las consultas al servidor con React Query.
Backend
El backend está desarrollado con NestJS y MongoDB, con autenticación vía Google OAuth 2.0 y JWT. Se comunica con APIs de terceros para buscar y obtener el audio de las canciones. Inicialmente usaba Invidious como fuente de audio, y actualmente se está migrando a OnTheSpot como alternativa más estable.
Infraestructura
Todo el backend corre en contenedores Docker con Docker Compose, desplegado en un servidor Linux. El stack incluye el API de NestJS, MongoDB y el servicio de descarga de audio.
Este es un proyecto personal sin fines comerciales — lo construí para uso propio y como ejercicio de desarrollo de producto completo con app móvil y backend.