ASP.NET Core minimal-API that aggregates artist, album and lyrics data from multiple external services (MusicBrainz, LastFm, Fanart.tv, CoverArtArchive, LyricsOvh, LrcLib) and caches the result in a local LiteDB file.
See docs/audit-2026-05-01.html for the architecture audit and
CLAUDE.md for the architectural cheatsheet used by Claude Code sessions.
Prerequisites: .NET 10 SDK.
The repository ships with empty placeholders for every credential. Populate
them via user-secrets
— never commit a real key to appsettings.Development.json.
The User Secrets ID is already configured on MusicData.Api.csproj, so from
the repo root:
dotnet user-secrets set "ApiKeySettings:Key" "<x-api-key clients must send>" --project MusicDataApi
dotnet user-secrets set "Services:LastFM:ApiKey" "<your last.fm api key>" --project MusicDataApi
dotnet user-secrets set "Services:FanArt:ApiKey" "<your fanart.tv api key>" --project MusicDataApi
dotnet user-secrets set "Telemetry:NEW_RELIC_INSERT_KEY" "<your new relic insert key>" --project MusicDataApiSecrets live under %APPDATA%/Microsoft/UserSecrets/<UserSecretsId>/secrets.json
on Windows and never enter the repository.
For the MusicDataApi.http smoke-test file, replace the @ApiKey placeholder
with your local value (or use the httpYac / REST Client env-file mechanism
of your editor).
dotnet build MusicDataApi.slnx -c Release
dotnet run --project MusicDataApi/MusicData.Api.csprojHealth checks:
GET /health/live— process is upGET /health/ready— LiteDB reachable
OpenAPI is exposed in development at /openapi/v1.json.
dotnet test MusicData.Tests/MusicData.Tests.csprojdocker compose up --buildMounts %APPDATA%/Microsoft/UserSecrets read-only into the container so
user-secrets work the same way locally and in the dev container.