← Selected work

02 / Portable media pipeline

YarReader

A crash-recoverable ingestion and archival pipeline that converts mixed publication formats into a portable static HTML library.

  • TypeScript
  • CLI
  • Content addressing
  • Archive recovery
  • Static HTML
  • Offline
01 — Problem

The constraint that shapes the system.

CBZ, CBR, EPUB, PDF, loose images, duplicate releases, interrupted copies, and incomplete downloads all enter through one inbox. The system must preserve originals and never activate an export it has not completely verified.

02 — What I built

A complete path, not an isolated component.

  • Explicit adapters for six source families
  • Full SHA-256 content identities and stable discovery
  • Schema-validated AI proposals with human review
  • Prepared, recoverable archive transactions
  • Deterministic page normalization to versioned WebP
  • Atomic immutable export generations with a no-server reader
03 — Architecture

Explicit ownership at every boundary.

InspectStable sources and explicit adapters
ClassifyDeterministic, AI, then human review
NormalizeVersioned pages with content hashes
ArchivePrepared transaction and recovery
ExportValidate, rename, activate
04 — Interesting engineering

The part worth looking at twice.

Complexity stays in the workstation pipeline. The activated reader is ordinary relative HTML and image files, so it remains portable across removable storage and offline environments.

05 — Result / current state

What exists now.

Interrupted work resumes from durable journals, alternate releases retain explicit identity, and every activated generation is immutable and verified. Derived output can be rebuilt from the archive and catalog.