Hi everyone,
I am interested in working on the “Showcase MusicBrainz Events in ListenBrainz” project for GSoC 2026 and would like to get early feedback on my approach.
Understanding of the Project
The goal of this project is to integrate MusicBrainz event data (concerts, festivals, etc.) into ListenBrainz and surface it in a meaningful way to users. This includes:
-
Displaying events on artist pages (upcoming and possibly past)
-
Creating a dedicated events page (global + personalized)
-
Showing event notifications in the user feed
-
Optionally allowing users to follow artists and receive event updates
Proposed Approach
1. Event Data Ingestion
-
Fetch events from MusicBrainz API
-
Store relevant fields (event name, date, location, artist relations)
-
Maintain periodic updates using background jobs
2. Backend (Python + PostgreSQL)
-
Design schema for events and artist-event relationships
-
Build APIs:
-
Get events for an artist
-
Get global events (paginated)
-
Get personalized events (based on user listens)
-
3. Artist Page Integration
-
Show upcoming events on artist pages
-
Optionally include past events with filtering
4. Events Page
-
Global events view (similar to Fresh Releases)
-
Personalized section based on user’s top artists
5. Personalization
-
Use listening history to identify top artists
-
Recommend events related to those artists
6. Notifications / Follow Feature
-
Add ability to follow artists
-
Show upcoming events in user feed
-
Consider lightweight notification system
Questions / Feedback
-
Should event data be fully stored in ListenBrainz DB or fetched dynamically with caching?
-
Is there an existing pattern in ListenBrainz for similar features (e.g., Fresh Releases) that I should follow?
-
For personalization, is there a preferred way to determine “top artists” (time window, scoring, etc.)?
-
Are there any constraints or preferences regarding background jobs / schedulers?
I would really appreciate feedback on the design, especially regarding data modeling and integration with existing systems. I am also actively exploring the codebase and looking to contribute before finalizing my proposal.
Thanks!