Song-Recommender - a naive song recommendation system built with Elixir and Neo4j

Hey everyone, hope you’re all good. I’ve been really interested in graph databases for a while now and decided to build some sort of project with the aim of improving my skills in this particular domain. After reading so many articles I saw that graph databases can be used to make product recommendations or things like that. I tried thinking about making a simple recommender system for something like Amazon products but that wasn’t that interesting to me. So I thought about making one for song recommendations (yes like Spotify). Anyway to make a really good song recommendation system, I would have to combine some ML with various other things and I wasn’t really going to become an ML engineer overnight. So I thought of something simpler. What if I could just extract relationships between various songs and artists, categorize songs into genres and track user activity to see what they were really listening to? Based on this, I could then make simple song recommendations, minimizing repeating songs while also ensuring I don’t show absolutely irrelevant songs. I happened to come across a csv file with song data of over 1 million songs which would be enough for this simple experiment ( Spotify_1Million_Tracks | Kaggle ).

To do this, I of course had to settle for a graph DB and I picked Neo4j. There happens to be tons of Bolt Elixir drivers out there, but the same isn’t quite reflected in the number of public repos that are utilizing Elixir + Neo4j(Cypher). The reason I’m posting is to probably get some views from others who have gone down the same path. How do you structure a phoenix project where you’ll primarily be interacting with a Neo4j backend? Total beginners may also benefit.

Here’s the completed project

Waiting for feedback :slight_smile:

5 Likes

I’ve written an article explaining how I tested the application:
https://medium.com/@kinyuadean/testing-a-neo4j-backed-elixir-application-with-testcontainers-76d10a0beab4