My Music App Server
← Back to Projects
My Music App Server is the server side of my personal music setup. It is designed as a single-user service for my home network, with the server acting as the main storage and source of truth for the music library.
Library and storage
Songs are stored in a SQLite database with their display name, artist and source type. YouTube and YouTube Music entries keep their video ID, while other sources keep their URL. Every song gets its own database ID, which is also used by the rest of the system when working with files, lyrics and listening history.
Downloads and media
The server handles downloads with yt-dlp. YouTube and YouTube Music sources are downloaded as audio, while other supported URLs can be stored through the same server-side flow. The server also manages thumbnails, streams the stored files to clients and keeps download state for the library.
Listening data and lyrics
Clients send listening events back to the server, which stores play history and provides statistics used by the app's History and Wrapped views. Lyrics can be uploaded manually and are stored as LRC files associated with the song ID. The API also provides playlist, artist, maintenance, validation and library-management functions used by the client.
ListenBrainz
ListenBrainz integration is optional. If a token is configured, completed listens can be submitted to ListenBrainz and the server can fetch recommendations. Recommendations already present in the library or wishlist are filtered out before being returned to the client.
Sync and access
The API exposes the library state and the audio, lyrics and thumbnail files needed by the client for offline synchronization. Requests that modify or synchronize private data are protected with the configured API key. The project is built for my own single-user setup rather than as a public multi-user streaming service.