archive.spenc.ee
A public deep-zoom archive for scanned paper ephemera — mid-century Pacific Northwest map covers, tourist pamphlets, and the illustration that filled the margins of working maps. Gigapixel tile viewing, full-text search, and AI-written backstories.
Why this exists
High-resolution scans of paper ephemera are huge — a single map cover can be hundreds of megabytes — and there's no clean, fast way to browse and zoom them on the web without a heavyweight viewer or a slow full-download. I wanted a personal, well-crafted home for the collection that loads instantly, zooms to gigapixel detail, and reads like an editorial catalog rather than a file dump.


How it's built
Ingest
A `pnpm ingest` CLI walks a folder of TIFF/JPEG scans, generating DZI tile pyramids, thumbnails, and previews with Sharp. Single files become one item; subfolders become multi-page items.
Store
Originals, thumbnails, and tile pyramids upload to Cloudflare R2 behind custom CDN domains. Item metadata lands in Neon Postgres via Drizzle, with a generated tsvector column for full-text search.
Serve
Next.js App Router server components read from Neon over HTTP. Detail pages mount OpenSeadragon against the R2 tile URLs for smooth gigapixel zoom; originals stream on demand from R2.
Enrich
A Gemini pipeline drafts a short backstory for each piece — the era, the publisher, what the illustration was selling — turning a scan into a catalog entry.
Notes
- Next.js 16 App Router, TypeScript, Tailwind — server-rendered, no client data fetching for the catalog
- Drizzle schema (items, item_images, tile_jobs) with Postgres full-text search over a generated tsvector
- Cloudflare R2 for originals + DZI tiles; OpenSeadragon for deep-zoom, no download required
- Sharp-based tile pyramid generation runs locally in the ingest CLI, not on the server
- Editorial design language — serif display type, warm paper, the collection presented as a catalog
Status: Live at archive.spenc.ee with 64 scans online. A personal project — an excuse to build a proper gigapixel viewer and a home for the collection.
64
Scans Archived
Gigapixel
Deep-Zoom Viewer
R2 + Neon
Serverless Stack
AI
Generated Backstories
Built With