01.The Problem
A reader wants to open the Heart Sutra on their phone. Today there are two options, both wrong.
Option one is a scanned PDF: archaic characters, no pinyin, no glosses. The reader stops on the second line — is 般若 pronounced bān ruò or bō rě? — and loses the thread.
Option two is a "practice app": streak counters, chant tallies, ambient music, a merit leaderboard. The text becomes a scorecard; reading becomes a game.
How might a sutra app respect the text and serve only comprehension?
02.Design Decisions
Three decisions define the product. Each is a "why", not a feature.
- Per-character pinyin, not per-line. Sutra rhythm lives in the single character — flattening pinyin to the line obscures the cadence. All Buddhist-specific readings are hand-verified (般若 as bō rě, not bān ruò).
- Long-press for definitions, not tap. On a scrolling page, taps misfire constantly — every accident breaks flow. Long-press preserves immersion for readers who don't need the gloss, and rewards the ones who do.
- Counting features collapsed by default, not surfaced. Chant counters are real practice, but putting them on the first screen turns text into score. The feature is present — just folded away. The app never nudges.
03.Scope & Implementation
Six sutras at launch, from the 260-character Heart Sutra (《心经》) to the 17,394-character Kṣitigarbha Sutra (《地藏经》) — spanning first-time readers to long-form practitioners.
The app ships as a PWA so it works offline — a product decision, not a tech one: reading tends to happen on commutes, at bedside, or inside temples, where network is unreliable. A Supabase backend with Google OAuth syncs reading position, bookmarks, and settings across devices; Zustand holds local interaction state.
04.What I Deliberately Didn't Build
Subtraction takes more discipline than addition. Three features looked obvious and were cut on purpose:
- Comments and community. Reading a sutra is a private act — group reactions introduce performance, make people wonder whether they're "reading it right".
- Push notifications. "You haven't chanted today" reminders turn a voluntary practice into an obligation, and that betrays the whole premise.
- Paid unlocks. Core features stay free forever — no subscription, no membership tier. Canonical texts should not sit behind a paywall.
05.Reflections & Next Steps
Shipping solo forces scope discipline — every feature has to answer does this help a reader understand the text? and if it doesn't, it gets cut.
Content curation turned out to be 50% of the real work and 0% of the lines of code: cross-checking pinyin against traditional Buddhist readings, punctuating Classical Chinese, proofreading variant characters. The engineering was the easy half. For a content product, content quality is product quality — the code is just a pipe that delivers text to the reader.
Next: partnering with a Buddhist academy or research group to expand the library while holding the "every character hand-verified" bar; and a study mode that surfaces the character gloss in a side pane without fragmenting the reading column.