Show HN: Ex Situ – Open-source spatial index of displaced cultural artifacts (exsitu.app)

51 points by hbyel ↗ HN
Hi, I designed and developed a spatial index that maps museum artefacts as connecting arcs/hyperlinks from their origin site to institutional location/sources. The Index specifically looks at western/euro-american institutions and maps their collection categorised by them under Islamic art, Asian/African art, ethnological collections, Middle East, South America etc.

Started as my MA thesis in 2022, kept building since, mostly solo with a little funding. Fully open source, self-hosted, AGPL-3.0, Next.js + Deck.gl on the frontend, Strapi backend, Python ETL pulling from museum open-access APIs. Currently indexing over 100k artifacts from all over the world, across 8 collections (Met, V&A, SMB Berlin). Recently added an md export so researchers can download provenance data for a filtered set of artifacts.

The infrastructure is conceptualized as an indexer, not a hoster. Even images are kept as URLs pointing to the source institutions. It's connective tissue between archives that were never designed to speak to each other, with an origin-first search UI concept. The data model is on purpose flat, to avoid encoding problematic taxonomies, and routes researchers directly to the source giving responsibility to the source institutions rather than duplicating institutional data. It indexes the relationship between origin sites and destination collections.

Coming from a design background, taking this project from prototype to production app has been incredibly rewarding, but honestly it’s getting a little bit overwhelming to scale alone. I would love community’s feedback on performance scaling, any code contributions, data pipelines for missing museum apis or general feedback.

Repo: https://github.com/hburakyel/ex-situ

Live: https://exsitu.app

20 comments

[ 1.7 ms ] story [ 27.3 ms ] thread
Huh! Was hoping to get, for example, a sense of scale of cultural artifacts stolen from Korea by the Japanese. But I don't see any provenance descriptions for Japanese institutions. Either way, this is super cool. Thank you for sharing this.
I think much more lines should go to Moscow. At least from such places as Crimea. But I see you covered only western/euro-american institutions.
Russia still has a huge portion of the Nazi stolen artifacts but I have no idea how many are in public museums.
holy gosh, this is brilliant. i've been toggling around this site for a good 40 minutes now. learning so much!!! arrrgggh, i love the internet.
This is fantastic visualization!

I couldn't figure out from the UI but is there a way to filter the map? Say, I only want to see things going out of Cusco or I only want to see where things end up in Berlin?

It would also be nice to have some directionality to the lines to indicate source and destination, perhaps a colour or lightness gradient or something.

It is truly very useful not only for art history but also for the history of colonial rule
Do you plan on improving the performance of the website ?
> Coming from a design background

From a UX perspective, it is very weird to place the toggle button for the right panel at the top of the left panel... After I gave up to find a way to close the right panel, I found that button a few minutes later, when I looked around for other interactive elements.

How well does the fuzzy matcher resolve provenance text to origin sites? Curious what share of the 200k in the README needed hand correction.
Is there any way to filter the lines? There are so many lines it's hard to see what's going on. But definitely interesting.
now make a database of cultural artifacts destroyed by origin countries
What counts as displaced ?
stolen and removed from the country before they could destroy it, then later people can complain about someone else having it because surviving artifacts in the origin country are rare. the moral outrage is proportional to the ever-increasing rarity.
The README says arc aggregation runs in a web worker. At 200k artifacts, what actually chokes first when everything is visible at low zoom?
This project is so cool! Hats off to ya for such a unique idea.