RAPPAMAPPA

RAPPAMAPPA is a little project that I have been wanting to build for a while. It’s a discovery tool that depicts artists as nodes and collaboration tracks/albums as edges between artists. I intended to make the visualization for rappers (hence RAPPAMAPPA), but you aren’t actually limited to them. I was inspired to make this website by Cameron Musco’s Rap Collaboration GraphThe link is HTTP, so if you’re not so daring I’ve also added a picture of the website below which I stumbled upon during my undergrad.

While similar in spirit, RAPPAMAPPA as a visualizer is a bit different than the Rap Collaboration Graph. Since I wanted to display the collaborations between artists when clicking on the edges, I didn’t want too much visual clutter from a dense graph. RAPPAMAPPA allows you to add artists one by one to the graph instead of trying to load hundreds at once. I can precompute the graph for a fixed set of artists, but I think it’s more fun adding the artists you care about. The website is built on the MusicBrainz API, which has a somewhat strict 1 req/s rate limiter, so I can’t make too many queries anyway. It’s probably possible to bypass this limitation if I really wanted to, but I have immense respect for MusicBrainz and their catalogue, so I am not looking to spike their servers. Some of the collaboration data is not entirely accurate since everything on MusicBrainz is open to editing. As a result, there may be edges that contain fan compilations, bootlegs, mixtapes, etc.
This whole website took me a weekend to make and leans a bit more vibecoded than AI-assisted. I used DevinNot affiliated with them, I accidentally purchased a subscription and decided to try them out for this project… CLI as my harness which I found pretty nice UX-wise and cheap cost-wise, albeit sometimes the TUI bugged out. Overall, I was impressed by how easy it was to scaffold the website and add hardware acceleration to the graph rendering. I will say some of the algorithms and implementations that the LLM came up with were way overengineeredIt tried to build its own hit detection algorithm for edges and nodes?? It didn’t work at all btw and I had to intervene quite a bit. On the other hand, it would have taken me weeks to make something like this by hand. Considering that I wasn’t actively trying to learn my web stack, I am mostly satisfied with using an LLM.