Mobile App
SnagMusic
SnagMusic is a music mobile app I use every day in the car. It started as a personal project to solve something simple: not wanting to pay for a streaming subscription — and ended up becoming a complete app with offline downloads, playlists, and background playback.
Mobile App
The app is built with React Native and Expo. It allows searching for songs, streaming them, or downloading for offline listening. It includes playlist management, a personal library with favorites, and a player with controls in the notification bar and lock screen.
The local database uses SQLite to store the offline library, syncing with the backend when connected. App state is managed with Zustand and server queries with React Query.
Backend
The backend is built with NestJS and MongoDB, with authentication via Google OAuth 2.0 and JWT. It communicates with third-party APIs to search and obtain song audio. It initially used Invidious as an audio source, and is currently being migrated to OnTheSpot as a more stable alternative.
Infrastructure
The entire backend runs in Docker containers with Docker Compose, deployed on a Linux server. The stack includes the NestJS API, MongoDB, and the audio download service.
This is a personal project with no commercial purpose — I built it for my own use and as an exercise in full product development with a mobile app and backend.