Skip to content
Nap Joseph Calub

oneword — a Bible speed reader with ORP alignment

An RSVP speed reader for Scripture: one word at a time, aligned to each word's optimal recognition point, with punctuation-aware pacing from 0 to 1500 WPM. Researched, tested, shipped in one focused day.

Deno Fresh / TypeScript (strict) / Tailwind / HelloAO Bible API / PWA


Context

I wanted to practice reading Scripture faster — exposure and review, not replacement for slow study. The RSVP technique (Rapid Serial Visual Presentation) is perfect for it: one word at a time at a fixed focal point, no eye movement. Every existing tool was ad-heavy, secular-only, or bloated. The technique is forty years old; the implementation didn't need to be complicated.

Constraints

  • One day of focused build time. Scope had to fit the day, not the wishlist.
  • The reading engine's correctness matters more than any feature: pacing math, navigation, and word-splitting are the product.
  • It should install on a phone and work offline — church basements have wifi like church basements.
  • Bible text via the HelloAO API, multiple translations.

Decisions

Align to the optimal recognition point. Every word is offset so the ORP — roughly the morphological pivot of the word — sits at the fixation point. Length-dependent alignment, computed per word, not a fixed center. This is the difference between RSVP feeling natural and feeling like a strobe light.

Pacing is punctuation-aware. Commas breathe, periods stop, verse boundaries pause longer: 1.3× at commas, 1.6× at sentence ends, 2.0× at verse breaks. Reading speed that ignores punctuation feels like being shouted at by a robot.

Persist state in the URL. Translation, passage, speed — everything lives in the URL. Shareable deep links to exactly the passage at exactly the WPM, with zero accounts and zero storage.

Test the core, not the pixels. Unit tests cover ORP computation, tokenization, and navigation (lib/orp.test.ts, lib/navigation.test.ts) — the logic that would silently ruin the experience if it drifted. The UI is Tailwind and trust.

Ship the whole product. SEO and Open Graph tags, a social preview image, PWA manifest and icons, keyboard shortcuts, fullscreen mode, a LICENSE. Fourteen commits, one day, done.

What shipped

A complete, installable product that runs from 0 to 1500 WPM across multiple Bible translations, with a tested reading engine and no accounts, ads, or tracking. It does one thing and respects your attention while doing it — which is the entire design brief.

What I'd do differently

The one-day constraint meant keyboard shortcuts are hardcoded rather than remappable, and there's no text-to-speech mode for auditory learners. If the tool earns daily use, those are the next two commits — driven by evidence rather than speculation.