← Selected work

01 / Product engineering

Hush.

For the written word. And the spoken one.

  • TypeScript
  • React
  • WebAssembly
  • IndexedDB
Hush's actual library interface with the current read and three original sample books
Actual application capture · Try the live application

The application

For the written word. And the spoken one.

I wanted a reading application where the interface gave the book room. Hush combines a publication-inspired library with a quiet reader, persistent places, and narration that runs on the device.

What I built

The application brings together EPUB and PDF rendering, import validation, source-aligned reading positions, typography controls, local persistence, a browser inference worker and a narration controller. Established document engines handle the underlying publication formats.

Three decisions

01

Keep the library on the device.

Books, bookmarks and reading places live in IndexedDB. The browser can provide the core reading experience without accounts or uploaded documents. The trade-off is deliberate: storage can be evicted, and there is no cross-device sync.

02

A listening position is its own state.

Reading navigation and narration have separate source anchors. Playback follows actual media events rather than an estimated timer, and resuming an exact offset depends on recovering the same cached audio clip.

03

Make voice setup an explicit choice.

The neural model is optional and downloaded only when enabled. A dedicated WebAssembly worker keeps inference off the interface thread. Additional voices reuse the engine and fetch their own small profile.

A view underneath

Hush / a view underneath

The system behind
the surface.

  1. 01React library & reader
  2. 02EPUB.js / PDF.js
  3. 03IndexedDB positions
  4. 04Kokoro WASM worker
  5. 05Audio controller & cache
Inspect the architecture
A small reading study

A place to slow down. A line of thought to follow. A page that gives the words enough room.

An original excerpt for this portfolio.

Evidence & boundaries

The published verification record dated 3 November 2026 reports 37 unit tests and 34 browser cases across Chromium, WebKit and offline flows. The real-inference checks exercise the bundled model, media output and saved voice choices. The record includes the exact release and workflow links.

Read the verification record
Current limits

English narration; no DRM removal, OCR or cloud sync. Physical iPhone and Android audio output, long sessions and background playback need device-level checks. Automated WebKit is distinct from physical Safari/iOS.

Actual phone reader in Hush with reachable reading controls
Actual Hush capture.
What I take from it

A good reading interface depends on the details beneath it: document positions, storage ownership, audio state and recovery when a browser changes the rules.

Next project / 02Gateway