-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
103 lines (101 loc) · 4.84 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<html lang="en">
<head>
<title>COLD (Controlled Object List and Datum (Concept))</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://caltechlibrary.github.io/css/site.css">
</head>
<body>
<header>
<a href="http://library.caltech.edu" title="link to Caltech Library Homepage"><img src="https://caltechlibrary.github.io/assets/liblogo.gif" alt="Caltech Library logo"></a>
</header>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="index.html">README</a></li>
<li><a href="LICENSE">LICENSE</a></li>
<li><a href="INSTALL.html">INSTALL</a></li>
<li><a href="user_manual.html">User Manual</a></li>
<li><a href="about.html">About</a></li>
<li><a href="https://github.com/caltechlibrary/cold">GitHub</a></li>
</ul>
</nav>
<section>
<h1 id="cold---controlled-object-lists-with-dataset">cold - (c)ontrolled
(o)bject (l)ists with (D)ataset</h1>
<h2 id="overview">Overview</h2>
<p>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. <strong>COLD</strong> manages
data as JSON objects in <a
href="https://github.com/caltechlibrary/dataset">dataset</a>
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).</p>
<p>COLD is no longer limited to rows and columns so data models can
evolve as needed.</p>
<h2 id="implementation">Implementation</h2>
<p>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 <a
href="https://github.com/caltechlibrary/dataset">datasetd</a>.</p>
<p>Your front end web server (e.g. Apache 2 + Shibboleth) must to be
configure to reverse proxy the cold services. <strong>The front end web
server is responsible for access control.</strong> 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.</p>
<p>In development TypeScript based services can be run via Deno tasks.
In a <a href="deployment.html">deployed setting</a> you should compile
<code>cold_admin</code> and run it along with <code>datasetd</code>
under systemd or other daemon manage system (e.g. macOS launchd).</p>
<h2 id="details">Details</h2>
<ul>
<li><p><strong>cold_admin</strong> is built as TypeScript middleware
interacting with Dataset collections via <code>datasetd</code>.
<code>datasetd</code> provides both static file services, access to
dataset collections as well as the ability to query the collections.
Dynamic pages use <a href="https://handlerbarsjs.com">handlerbars</a>
templates, each with their own “view” template hierarchies.</p></li>
<li><p><strong>datasetd</strong> is part of the <a
href="https://github.com/caltechlibrary/dataset">Dataset</a> project. It
provides the JSON API needed to curate the objects in a dataset
collection.</p></li>
<li><p><strong>directory_sync</strong> is build as TypeScript command
line program suitable to be run from a cronjob. It is responsible for
updating Caltech People data from the Caltech directory.</p></li>
</ul>
<p>Public content access is through files exported to our <a
href="https://feeds.library.caltech.edu">Feeds</a> system. Deno is used
to managed tasks that export content to it.</p>
<p><strong>An important point COLD’s access control is deferred to the
front end web server (e.g. Apache2+Shibboleth).</strong></p>
<h2 id="requirements">Requirements</h2>
<ul>
<li>Deno >= 2.0.6</li>
<li>Dataset >= 2.1.23 (using SQL JSON storage)</li>
<li>The following are required to build the UI and compile the assets
needed by <strong>COLD</strong>
<ul>
<li>GNU Make</li>
<li><a href="https://pandoc.org">Pandoc</a> >= 3.1 (to build
documentation and man page)</li>
<li>A text editor (e.g. Zed, VSCode, micro, nano, vi, emacs …)</li>
</ul></li>
<li>A front end web server with SSO or Basic Auth (e.g. during
development) support</li>
<li>A web browser with JavaScript support enabled</li>
</ul>
<p>For development purposes the required software is enough, when
deployed to the public internet you <strong>MUST</strong> use a front
end web server to enforce access controls.</p>
<p>See <a href="user_manual.html">user manual</a> for more details.</p>
</section>
<footer>
<span>© 2022 <a href="https://www.library.caltech.edu/copyright">Caltech Library</a></span>
<address>1200 E California Blvd, Mail Code 1-32, Pasadena, CA 91125-3200</address>
<span><a href="mailto:library@caltech.edu">Email Us</a></span>
<span>Phone: <a href="tel:+1-626-395-3405">(626)395-3405</a></span>
</footer>
</body>
</html>