Mobile App

SnagMusic

Enero 2025 Full Stack Developer Proyecto personal
Visitar sitio
React Native Expo NestJS MongoDB SQLite Docker Invidious

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.

Galería