Skip to content

SemanticLab/berenson-discovery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Berenson Discovery

A static web app for browsing the structured data extracted from 15 scanned books by Bernard (and Mary) Berenson, 1894–1903 — the Lists, the catalogue raisonné of Florentine drawings, prose mentions and citations, plus Wikidata reconciliation of the artists, places and collections.

Everything links back to its source: every extracted row has a view link showing the original page scan next to what was extracted from it.

How it works

  • The app is a single-page static site (no server). The entire SQLite database (~10 MB gzipped) is fetched once and queried in the browser via sql.js (SQLite compiled to WebAssembly) — which is why the read-only SQL console can run arbitrary SELECTs client-side.
  • Page-scan JPEGs (~1600 px wide, all 3,937 pages) and the database are hosted in a Cloudflare R2 bucket (public, CORS-enabled); the app itself is served by GitHub Pages.
  • The scans are HathiTrust digitizations of public-domain volumes.
file role
index.html / styles.css shell + look (ported from the local Flask UI)
config.js R2 base URL
data.js table/column documentation, canned research queries
app.js hash-router, views (dashboard, tables, entity, page, search, SQL)
vendor/sql-wasm.{js,wasm} sql.js 1.13.0, vendored

Deploying

  1. Push to main.
  2. One-time: repo Settings → Pages → Source: GitHub Actions.
  3. The pages.yml workflow publishes the site to https://semanticlab.github.io/berenson-discovery/.

Regenerating the data

The extraction pipeline lives in the private berenson working directory (stages 00–40: page classification, LLM extraction with OCR verification, database assembly, Wikidata reconciliation). To refresh this site's assets:

# in the berenson pipeline directory
uv run --with boto3 python scripts/50_deploy_static.py            # full: db + render + upload
uv run --with boto3 python scripts/50_deploy_static.py --db-only  # just the database

R2 credentials are read from the shell environment (R2_S3_API, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages