Caltech Library logo

cold - (c)ontrolled (o)bject (l)ists with (D)ataset

Overview

Caltech Library maintains a list of people, groups and funders and their related identifiers. For many years these were managed using a spreadsheets. That has become cumbersome. COLD manages data as JSON objects in dataset collections. TypeScript provides a middleware for the user interface with datasetd providing object management. The front end web server provides access control (e.g. via Shibboleth).

COLD is no longer limited to rows and columns so data models can evolve as needed.

Implementation

This repository implements COLD, a web application for curating object lists. It is built using TypeScript and Deno. It requires the JSON API provided by datasetd.

Your front end web server (e.g. Apache 2 + Shibboleth) must to be configure to reverse proxy the cold services. The front end web server is responsible for access control. Ideally your front end web server software (e.g. Apache2, NginX , Lighttpd) is configured with a a single sign-on implementation like Shibboleth. For development services you can just use basic auth for access control testing.

In development TypeScript based services can be run via Deno tasks. In a deployed setting you should compile cold_admin and run it along with datasetd under systemd or other daemon manage system (e.g. macOS launchd).

Details

Public content access is through files exported to our Feeds system. Deno is used to managed tasks that export content to it.

An important point COLD’s access control is deferred to the front end web server (e.g. Apache2+Shibboleth).

Requirements

For development purposes the required software is enough, when deployed to the public internet you MUST use a front end web server to enforce access controls.

See user manual for more details.