Bible Module Format
A module is a single SQLite database file containing one body of study content — a translation, a commentary, a dictionary, a devotional, a topical index, a cross-reference set, or an entity tag graph — together with enough metadata to identify, license, and validate itself. Installing one is copying a file; removing one is deleting a file.
This section publishes the shipped SQL schemas verbatim, so you can build a module the reference application will read without consulting any source code.
- Schema reference — the complete DDL for every module type, straight from the app's own schema files.
The three required tables
Every conforming module, whatever its type, carries:
module_info— one row (info_id = 1) declaring identity (module_uuid),format/format_version,canon=protestant-66,versification=kjv-english, and licensing.verse_link— the single uniform content→verse linking shape (may be empty).verse_id_endisNOT NULL; a single verse isverse_id_end = verse_id_start.schema_version— at least one row recording the schema revision.
Generate and validate a module
The reference repository ships tooling for the whole round trip:
# 1. Emit an empty, conforming template pre-filled with a fresh module_uuid
node scripts/create-module-template.js --type=commentary --abbr=mycomm --name="My Commentary"
# 2. Fill the content tables (see the schema reference), then validate
node scripts/validate-module.js commentary_mycomm.db
The validator enforces every MUST in the format: canon and versification
values, a valid module_uuid, the required tables, the range convention, and —
for Bible modules — that no verse falls outside the 66-book canon.
The full normative specification lives in the repository at docs/Design/DataModel/ModuleFormat.md.