philamuseum.org Replatform

When I arrived a The Philadelphia Museum of Art (PMA), they’d been struggling for over two years to upgrade Drupal 8 to 9, and 10 was being released. The Drupal 8 project had a lot of custom code and depended on modules not available in version 9. And Drupal wasn’t the only CMS: Parts of the site ran on Wordpress, Honcho CMS (the ancient predecessor to Craft CMS), and a separate Collections system. The AWS infrastructure for the deployments were complex and costly, especially for a small team without backend or devops support.

It was in this environment that I piloted a project to replatform PMA’s rodinmuseum.org website to a simpler, managed CMS solution, sanity.io. The project was a success, and we moved on to replatforming philamuseum.org. My team worked with a range of stakeholders throughout the organization to develop a universal content model that was then translated into Sanity schemas. From there, we built out Sanity Studio with the ability for editors to manage every aspect of PMA’s content, from linking related content, to ranking content within the search engine. Custom Sanity Studio components allow the ability to search and link Collection Objects to Sanity content.

Using AWS Opensearch and Fastify I created an ETL and search API. The ETL ingests content from a variety of sources, primarily Sanity for editorial content and Firestore for Collections data, but also XML & JSON feeds (store & job listings). The Search API enables search-as-you-type and faceted search across all content types, as well as surfacing ranked lists within Sanity Studio for default search results, and features fuzzy searching and custom analyzers, tokenizers, and filters for refined functionality (e.g. diacritic-agnostic).

In replatformings there’s often a debate about self-hosting vs. using a paid managed service. I’m a fan of open-source, and CMS projects like Craft CMS are great. But in the case of organizations like PMA that are resource-constrained, I think it’s worth considering paying a few hundred bucks each month for a stable, reliable content platform that decreases or eliminates the need for upgrades, devops & security, and complex cloud infrastructure. This allows small teams to focus on delivering features rather than building/maintaining a CMS.

Ranked Search Results

Within Sanity Studio an easy-to-use drag & drop list allows editors to rank default content results, both for global results (initial search page) as well as for each section. This allows editors to surface frequently-accessed and priority content.

Search-as-you-type

Search as you type across all content. Handles minor spelling mistakes and prioritizes entities like Artist:

Facet Search & Filtering

Easily search and filter within facets:

Cross-Content Search Results

Searches surface content across all content types, including Exhibitions, Curated Selections, Educational Resources, Shop Products, and of course Artworks.

Related Content

Related Artworks (“More like this”) is an Elasticsearch search by a weighted matrix of facets including Constituent, Culture, Department, etc.
“Explore More” is a Sanity Studio list of related content that allows editors to surface any content type, from shop products to educational resources.

Constituent Role Relationships

Search includes consideration and contextual presentation of Constituent Roles to clarify labels, allowing users to distinguish artworks made by an artist vs. “After”, “Follower of”, “Imitation of”, etc.

Previous
Previous

Content Models

Next
Next

DALL-E 2 & 3 Library of Babel