All tags

TAG

#codh

5articles

🔑Retrofitting Firebase auth and a JSONkeeper-compatible API onto codh-mirror so IIIF Curation editing actually works — walking back the earlier `won't work` claim

A follow-up to the earlier codh-mirror post, which explicitly called Firebase auth and the curation save backend out of scope. This time I went back and wired them up: reusing a Firebase project (Authorized domains and sign-in providers), discovering that FirebaseUI 3.x's default redirect signInFlow silently fails on GitHub Pages subpaths, swapping the curationJsonExportUrl in 9 places across five tools, and pointing the iiif-curation-manager submenu links at the sibling tools via relative URLs. Server-side details (Cloudflare Workers + D1 as mainline and PythonAnywhere Flask as upstream-faithful fallback) live in two separate posts; this one covers only the codh-mirror client side.

codhiiiffirebasefirebaseui

🪣Rewriting JSONkeeper on Cloudflare Workers + D1 — A 360-Line Hono + jose Replacement for the IIIF Curation Viewer's Save Backend

A from-scratch rewrite of JSONkeeper — the save backend for the IIIF Curation Viewer — not on top of the original Flask code, but as a Cloudflare Workers + D1 service. Covers Firebase ID-token verification with Hono + jose (no Admin SDK, no service-account key needed), the D1 SQLite schema, top-level + nested JSON-LD `@id` rewriting, a minimal Activity Stream collection, CORS and Viewer-compatible headers, a wrangler-based deployment runbook, and a feature-by-feature diff against upstream JSONkeeper.

cloudflarecloudflare-workersd1hono

🪣Deploying JSONkeeper on PythonAnywhere with HTTP API Only — A Self-Hosted Save Backend for the IIIF Curation Viewer

A reproducible runbook for self-hosting JSONkeeper — the save backend for the IIIF Curation Viewer / Editor / Manager / Board — on PythonAnywhere's free Beginner plan, using only HTTP API calls except for two one-time browser actions (API token issuance and first-time Bash console attach). Covers Flask 1.0 / apscheduler 3.5 incompatibility with modern Python, Firebase Admin SDK service-account key handling, the 100 CPU-second/day cap, CORS, and patching the Viewer-side codh-mirror repository.

pythonanywherejsonkeeperflaskfirebase

🪞Setting up a dedicated GitHub Pages repository for a temporary CODH-tool mirror — including the missing kuromoji dictionary in Soan

While the ROIS-DS Center for Open Data in the Humanities (CODH) website is down for long-term maintenance (notice issued 2026-02-24, no announced reopen date), I restored several CODH tools (vdiff.js / IIIF Curation Viewer / Soan / etc.) from the Wayback Machine and similar sources and published them as a standalone GitHub Pages repository (codh-mirror). This post covers the setup procedure and the gotchas I hit (notably the missing kuromoji dictionary for Soan). Strictly a temporary measure until CODH service resumes.

codhiiifvdiffsoan

🪞Restoring CODH's vdiff.js from the Wayback Machine to Temporarily Bring Back The Tale of Genji's Face Comparison Feature

The website of the ROIS-DS Center for Open Data in the Humanities (CODH) is currently down for long-term maintenance (notice issued 2026-02-24, no announced reopen date), which broke the 'patapata face comparison' feature on Digital Tale of Genji that called CODH's vdiff.js directly. As a stop-gap until CODH comes back, I pulled the vdiff.js distribution out of the Wayback Machine and self-hosted a mirror. This post records the procedure. Strictly a temporary measure until CODH service resumes.

codhvdiffwayback-machinearchive