Over the winter break I’ve been reviving DressDiscover, a suite of open source web applications for digital collections of historic clothing. I started this project in 2015 as a collaboration with Arden Kirkland, a digital librarian and former costume collection manager, after I read her article in Dress, “Sharing Historic Costume Collections Online”.

The first web application was a union catalog of a few existing digital collections, such as Historic Dress, the Texas Fashion Collection, and the Europeana Fashion collection. In order to support extract-transform-load into the catalog I created several auxiliary projects, such as a Python client for the Omeka Classic API and a Python library for reading PastPerfect exports. I later incorporated the PastPerfect library into a separate open source tool to generate static web sites from PastPerfect databases.

The second DressDiscover application was a web-based worksheet for describing garments using visual workflows. Arden described this project and her underlying Costume Core vocabulary in a recent article for the Visual Resources Association Bulletin.

I often use my passion projects as a way of learning new technologies and techniques. The worksheet web application is implemented entirely in the browser with no bespoke server support, so that the whole application can be copied and embedded in other web sites and served as a set of static files. The current incarnation is written in TypeScript with React.js. It can store worksheet state in Google Sheets, which required me to support browser-only OAuth and Google API access.

The original union catalog (ca. 2015-2016) was implemented with Vaadin, a front end framework built around the Google Web Toolkit for translating Java to JavaScript. The Vaadin user interface was connected to Java-based microservices in the middle tier, with a MongoDB and ElasticSearch storage tier.

The new union catalog I’ve been working on consists of:

I’ve been developing a framework to map RDF to Scala case class domain models, which can be exported easily via the GraphQL API with Sangria. It’s graphs all the way down.