Rhema
Features

Bible Translations

Ten bundled translations across four languages, served from a single SQLite database with FTS5 full-text search.

Rhema ships with ten Bible translations spanning English, Spanish, French, and Portuguese. They're stored in a single SQLite database (data/rhema.db) with FTS5 virtual tables for fast text search.

Bundled translations

The list comes verbatim from data/download-sources.tsEXPECTED_TRANSLATIONS enumerates the JSON files that setup:all expects under data/sources/:

FileTranslationLanguage
KJV.jsonKing James VersionEnglish
NIV.jsonNew International VersionEnglish
ESV.jsonEnglish Standard VersionEnglish
NASB.jsonNew American Standard BibleEnglish
NKJV.jsonNew King James VersionEnglish
NLT.jsonNew Living TranslationEnglish
AMP.jsonAmplified BibleEnglish
SpaRV.jsonReina-ValeraSpanish
FreJND.jsonDarby (French)French
PorBLivre.jsonAlmeida LivrePortuguese

How they're delivered

All ten translations come from a single bundled archive that download-sources.ts fetches during phase 2 of setup:all. There's no separate BibleGateway phase — earlier copy was wrong about that. The cross-reference dataset is fetched in the same phase from openbible.info.

Cross-references

Rhema imports 340k+ cross-references (the bundled file currently has 344,800 entries) from openbible.info so every verse links to thematically related passages. The cross-reference panel shows them ranked by relevance, and you can click through to queue any of them for broadcast.

Switching translations during a sermon

Translation picker in the transport bar with all ten translations listed

The transport-bar translation picker lists every bundled translation. The active translation is the one rendered on the live overlay; switching here is the same surface that voice commands and remote control hit under the hood. Click to expand.

The active translation is the one rendered on the broadcast overlay. You can change it three ways:

  1. Voice command — "read in NIV", "switch to ESV", and so on. See Voice control for the full alias table.
  2. UI control — the translation picker in the transport bar.
  3. Remote control — OSC, HTTP, or a Stream Deck button. See Remote control.

When you swap, the live overlay reflows with the new translation while keeping the same verse reference.

Search architecture

Every translation has its own FTS5 virtual table. SQLite's FTS5 ships with BM25 ranking by default, which gives natural results when searching by phrase ("walk by faith", "fearfully and wonderfully").

The frontend layers Fuse.js (src/lib/context-search.ts) on top for instant fuzzy search across the recent transcript context — the kind of typing-while-searching experience you want when scrubbing for a verse during a service.

On this page