Directional graph
Members left. Albums right. Songs below.
The user learns the shape quickly, and the graph keeps its promises. That consistency is what makes the interface feel readable instead of chaotic.
Independent builder / public front door
This site is no longer a long page of loosely related sections. It is a guided showroom for the work, with MyMusic at the center: the app itself, the engineering behind it, and the thinking that turned a personal music collection into something surprisingly powerful.
MyMusic Explorer
Database ingestion. Deduplication. Canonical entities. Crawlers. Chart harvesting. Graph UI. Inline listening. One app, many layers of engineering.
MyMusic
Engineering
For the curious and the engineer
This is the full public-facing architecture story from the MyMusic wiki, embedded directly into the site so a visitor can read the whole thing one section at a time instead of getting a compressed summary.
Executive Summary
Public-facing architecture story for visitors who want to understand the product, the engineering, and the thinking behind it without exposing operational details.
MyMusicCollection is not just a music catalog and not just a media player.
It is a relational discovery system built around a personal music collection and expanded into a much larger knowledge graph.
The project began with a practical need: clean up a large collection, identify duplicates correctly, and get the music into a trustworthy database. Once that foundation existed, the project became something much more interesting. It grew into a system for exploring how artists, albums, songs, credits, chart history, and related sources connect to one another.
That progression is the heart of the story. A collection-management problem became an engineering platform and a product experience.
What Problem The App Solves
At first glance, a music collection looks simple. In reality, it is full of messy data:
A simple file browser cannot solve those problems well. It can only display the mess.
MyMusicCollection was built to solve the deeper problem:
That means the system is designed not only to store music, but to understand it as connected data.
How The Project Started
The project began with collection cleanup and ingestion.
The first challenge was to turn a real folder of music files into a structured system that could support:
That early phase matters because it reveals a core engineering habit: do the foundational work properly before building the flashy part.
The graph interface and discovery features only became possible because the collection was first modeled carefully and loaded into a real relational system.
The Core Architectural Idea
The project has two major layers that work together:
This is the part that represents the owned music library.
It holds the tracks, collections, albums, cleaned artist text, normalized artist tokens, and the canonical artist layer that turns ambiguous strings into stable entities.
This layer answers questions such as:
This is the part that expands outward from the owned collection.
It represents artists, works, relationships, contextual facts, chart history, and connected musical data gathered from external sources.
This layer answers questions such as:
The system is powerful because these two layers support each other. One gives trustworthy local truth. The other gives broader context.
Why PostgreSQL Was Chosen
PostgreSQL was the right foundation because this project is fundamentally about relationships.
The system needed:
This was never just a matter of "where do we store some files?".
The project needed a database that could support both exacting cleanup work and a larger connected model of artists, albums, songs, and graph relationships. PostgreSQL provided that balance of power, rigor, and flexibility.
Why Secret Management Was Treated Seriously
One of the architectural signals in this project is that infrastructure discipline was treated as part of the engineering work, not as an afterthought.
That includes secret management.
Instead of treating credentials as something to scatter across scripts and local config, the project adopted a proper secret-management pattern so that the system could:
That decision matters because it reflects engineering judgment. The goal was not only to make the app work, but to make it work in a way that could scale and be maintained responsibly.
The Shared Utility Layer
Another important design choice was to avoid re-implementing the same infrastructure logic in every script.
The project relies on a shared utility layer for things like:
That may sound less exciting than the graph UI, but it is one of the strongest signals in the project. It means the codebase was shaped intentionally around consistency and reuse.
In practical terms, the project does not just contain features. It contains engineering patterns that can be reused in other work.
The Collection Pipeline
The ingestion side of the project follows a clear progression:
This is important because it shows the system was not built on vague heuristics. It was built as a staged pipeline where each step has a defined responsibility.
That structure makes the system easier to trust, easier to debug, and easier to extend.
The Canonical Artist Layer
One of the most important ideas in the project is that artist identity cannot be left at the level of raw text strings.
Real collections contain:
If the system cannot unify those, it cannot answer meaningful questions later.
The canonical artist layer solves that by separating:
That move from text to entity is what allows the rest of the system to behave like a real knowledge model rather than a glorified tag browser.
The Discovery And Harvester Story
Once the collection side was working, the project expanded into discovery.
This is where the application became more than a personal catalog. It started to gather and connect broader musical information through harvesters and hydrators.
Those components are responsible for:
This is the point where the project becomes a showcase of both data engineering and software design. The system is no longer simply storing music. It is building a knowledge structure around it.
Why The Project Uses Queue-Backed Workflows
The external enrichment side of the project is intentionally separated from the core app logic through queue-backed workflows.
That design improves several things at once:
This is one of the strongest engineering signals in the entire project. It shows that the system was designed not just to fetch external data, but to do so in a way that respects scale, separation of concerns, and operational sanity.
What The External Sources Contribute
Different external sources bring different kinds of value.
Some are better for structured music identity and relationships. Some are better for listener context, similarity, and discovery. Some are better for narrative or historical context.
The important design point is that these sources are not there as decoration. Each one contributes something specific to the user experience and the data model.
Together, they help the app become:
The Graph As A Product Decision
At some point the project crossed an important threshold.
The interesting part of the data was no longer the list. It was the shape of the relationships.
That is why the UI evolved into a graph-first experience instead of staying a traditional library browser.
The graph interface supports:
That product decision reflects a deeper truth about the system: the point is not just to store facts. The point is to make those facts navigable in a way that feels human and intuitive.
Why The Interface Matters
The graph UI is not just presentation polish layered on top of data.
It is where the engineering work becomes understandable to a visitor.
The interface helps demonstrate that the project contains:
The result is a product that feels playful and surprising on the surface, while resting on a very serious foundation underneath.
What This Project Shows About The Engineering
For a technically curious visitor, MyMusicCollection demonstrates several useful things at once:
In other words, it is not only a music project.
It is evidence of the ability to:
What Makes The Project Distinct
Many projects can show a user interface. Many projects can show some database work. Fewer projects show the whole path from raw messy input to a polished, relationship-driven experience.
That full path is what makes MyMusicCollection distinctive.
It demonstrates:
The Best Short Public Description
If someone wants the shortest accurate version for public display, it is this:
MyMusicCollection began as a serious effort to clean up and model a personal music collection, then grew into a graph-based discovery system that showcases database design, data engineering, source integration, and product thinking in one coherent application.
Related
how_mymusiccollection_works.mdWriting
Long-running notebook
A long-running collection of notes on Microsoft Access, database design, and building practical software. It is part diary, part reference shelf, part public trail of how the work gets thought through.
Read the blogWhy it matters
The writing is useful because it shows the same habit as the software: make the next step clearer than the last one.
About
I have spent a long time working in the space where data, software, and messy real-world problems meet. This site is a more focused front door to that work, built to show not just outputs but the thinking and engineering behind them.
Some projects are public. Some stay behind protected doors. All of them are built with the same preference: use the right structure, make the next move clearer, and do the hard parts well enough that the user gets something elegant.