JazzGraph is a web application for discovering music recorded by jazz musicians, presented as a
graph: artists are nodes, and edges represent collaboration (artists who appear on the same
recordings). It queries a MusicBrainz ws/2 API directly from the browser — primarily a private
MusicBrainz instance, with the public MusicBrainz API available as a settings-toggle fallback.
Core use cases:
- Search for a musician to see their recordings.
- List a musician's collaborators to see the recordings they made together.
- Client: Vanilla TypeScript + Vite, Cytoscape.js for graph rendering, IndexedDB for caching MusicBrainz responses.
- Server (
server/, optional): Go backend over the MusicBrainz PostgreSQL database, used for queries that are impractical overws/2(e.g. collaborator-to-collaborator adjacency). The app runs without it; only server-backed features degrade.
See doc/architecture.md for the full architecture and doc/implementation.md for task status.
npm install
npm run dev # start the Vite dev server
npm test # run testsThe server is only needed for features that depend on it, and requires a MusicBrainz PostgreSQL
database. See server/README.md for endpoints, configuration, and prerequisites.
cd server
go run ./cmd/server
go test ./...Copyright © Radu Popescu 2026.