Problem: Many Bible readers want to focus specifically on what Jesus said. In printed "red letter" Bibles, Jesus' words are printed in red ink. BibleWeb needs a digital equivalent that's even better.
Solution: All direct speech of Jesus in the four Gospels is highlighted in gold (#fbbf24). A dedicated "Jesus Words" mode filters chapters to show only Jesus' speech, with navigation that skips to relevant chapters.
Not included: Disputed speech coloring (that's a separate feature). This is the core highlighting — certain, direct speech only.
When reading any of the four Gospels (Matthew, Mark, Luke, John), verses where Jesus is speaking directly appear in gold text instead of the normal text color. This works in any translation mode (EN, NL, or Both).
A special "JW" (Jesus Words) mode can be activated via a button in the nav bar or by adding ?jw=1 to the URL. In this mode:
User flow:
Edge cases:
Colors:
var(--color-jesus-words) = rgb(255, 200, 80) — warm gold/ambervar(--color-text) — theme-dependentJW Mode Toggle:
?jw=1Visual: The gold color is chosen to be warm and distinctive without being harsh — inspired by traditional red-letter Bibles but using gold to match the app's warm aesthetic.
Data:
jesus_speech with columns: id, verse_id (FK → verses.id), speech_type ('direct'/'indirect'), certainty_level ('certain'/'probable'/'possible'), attested_in, notesverse_id for fast lookupsQueries (apps/web/src/lib/server/queries/jesus-speech.ts):
getJesusSpeechForChapter(bookId, chapter): joins jesus_speech + verses, returns verse IDs with Jesus speechgetJesusSpeechChapters(): returns all distinct (bookId, chapter) pairs with Jesus speech, filtered to books 40-43 (Gospels only)Data flow:
jesusSpeechVerseIds (array of verse_id integers)Set<number> for O(1) lookupVerseList → each VerseText receives isJesusSpeech booleanVerseText.svelte: when isJesusSpeech, text color becomes var(--color-jesus-words)Files:
apps/web/src/lib/server/queries/jesus-speech.ts — database queriesapps/web/src/lib/components/bible/VerseText.svelte — color renderingapps/web/src/routes/(app)/read/[[book]]/[[chapter]]/+page.svelte — JW mode logicapps/web/src/routes/(app)/read/[[book]]/[[chapter]]/+page.server.ts — server data loadingCurrent: DONE Milestone: v1 Priority: High — distinctive feature of BibleWeb
History:
jesus_speech table includes certainty levels for future disputed-speech coloringDependencies: