# Lector — Feature Roadmap

Last updated: April 20, 2026 (Phase 9 complete — full Greek Bible added)

---

## Current State

Lector is live at **lector.nerdbox.com** — a self-hosted daily reading and translation app for Latin and Classical Greek. Deployed via Docker Compose on a VPS with Nginx reverse proxy and Let's Encrypt SSL.

### What's shipped

**Infrastructure**
| Feature | Status |
|---------|--------|
| Docker Compose deployment (lector-app + morpheus-api containers) | ✅ Done |
| Nginx reverse proxy + SSL (lector.nerdbox.com) | ✅ Done |
| No external API calls at runtime — fully self-contained | ✅ Done |

**Morphological Engine**
| Feature | Status |
|---------|--------|
| Full morphology SQLite DB — 222K entries, 128K lemmas, 115K forms (LSJ + Lewis & Short via Morpheus) | ✅ Done |
| Morpheus Python sidecar for real-time analysis of inflected forms not in DB | ✅ Done |
| Three-tier parse: SQLite DB → Morpheus sidecar → in-memory inflection tables | ✅ Done |
| Accentless Greek input — generates all valid accent variants in Beta Code | ✅ Done |
| Macron-free Latin input | ✅ Done |
| 115K bundled short definitions (Logeion/helmadik shortdefs, CC BY-SA) — no external lookup | ✅ Done |
| Curated lemma store (~200 entries) with principal parts, frequency rank | ✅ Done |
| Dictionary enrichment: curated lemmas take priority, Logeion DB fills the gaps | ✅ Done |
| Links to Logeion and Perseus for every parsed lemma | ✅ Done |

**App**
| Feature | Status |
|---------|--------|
| Daily passage reader (Today tab) with word-by-word glosses | ✅ Done |
| Self-assessment after each passage | ✅ Done |
| Review tab — revisit past passages | ✅ Done |
| Analyze tab — morphological analysis + full dictionary entry for any Greek or Latin word | ✅ Done |
| Settings — language mix, difficulty tiers, dark mode | ✅ Done |
| 12 curated seed passages (5 Latin, 7 Greek) across 3 difficulty tiers | ✅ Done |
| PostgreSQL passage storage — passages, word occurrences, notes, questions tables | ✅ Done |
| Perseus TEI XML ingestion pipeline — 10,527 passages across 45 works | ✅ Done |
| Biblical Greek corpus — 7,055 passages (LXX + NT), full Greek Bible | ✅ Done |
| Admin panel in Settings (broadnax@gmail.com) — expandable passage browser + user list | ✅ Done |
| Anki TSV export — tab-separated deck download from Settings → Vocabulary | ✅ Done |
| SM-2 spaced repetition backend — scheduling, review queue, answer grading | ✅ Done |

**App**
| Feature | Status |
|---------|--------|
| PostgreSQL persistence — user state, settings, review queue survive container restarts | ✅ Done |
| SRS review due badge in navigation (live count, refetches every 60s) | ✅ Done |
| POS color-coding (amber=verb, sky=noun, emerald=adj, violet=pron) — togglable in Settings | ✅ Done |
| Frequency-based gloss suppression (medium: rank ≤30, hard: rank ≤100) | ✅ Done |
| Full paradigm tables in Analyze tab — rules-based generation stored in PostgreSQL | ✅ Done |
| Latin + Greek pronoun paradigms (10 Latin, 7 Greek — hardcoded tables) | ✅ Done |
| Greek noun paradigms (20,226 from morphology.db; 2nd/1st/3rd decl regular types; 202K rows) | ✅ Done |
| Session-based authentication with `AUTH_ENABLED` env var — zero-config for personal use | ✅ Done |
| REST API documentation (`docs/API.md`) | ✅ Done |
| Save to Review from Analyze tab — add any word directly to SRS flashcard queue | ✅ Done |
| Full LSJ (Greek) + Lewis & Short (Latin) dictionary entries — ingested from Perseus XML | ✅ Done |
| Collapsible full-entry panel in Analyze tab with hierarchical sense display | ✅ Done |
| Citation links to Perseus Hopper for every in-entry citation | ✅ Done |

### What's not yet built

| Feature | Phase |
|---------|-------|
| Translation coverage beyond Perseus (43% covered; Livy/Homer/Seneca/Vergil gaps) | Phase 3 |
| iOS app (Capacitor) | Phase 7 |

---

## Phase 1 — Persistent Storage ✅

**Shipped** (superseded by Phase 6). `SqliteStorage` (`server/sqlite-storage.ts`) replaced `MemStorage`, persisting user state in a `lector.db` SQLite file. In Phase 6, `sqlite-storage.ts` was removed entirely and all user data migrated to PostgreSQL (`lector-postgres` container). The morphology/dictionary SQLite database (`morphology.db`) is still used and lives in the `lector_data` Docker volume — it is read-only and contains no user data.

---

## Phase 2 — SRS Review Polish

**Shipped** 2026-03-18 (commits `b0c55a3`, `5aadcb1`).

- ✅ Review card UI: inflected form → reveal lemma + definition + morphology + context snippet
- ✅ **Hard** grade between Again and Good (SM-2: easiness −0.15, interval ×1.2)
- ✅ Keyboard shortcuts: Space/Enter flip, 1 Again / 2 Hard / 3 Good / 4 Easy
- ✅ Manual card creation: "New Card" button → front/back/language modal
- ✅ Per-card delete: hover trash icon → soft delete
- ✅ Post-session summary: accuracy %, duration, full grade breakdown
- ✅ `GET /api/review/stats` endpoint

---

## Phase 3 — Content Expansion

**Substantially shipped 2026-03-23.**

### What shipped

- ✅ **PostgreSQL passage storage** — `passages`, `passage_word_occurrences`, `passage_notes`, `passage_questions` tables; auto-created via `ensureSchema()` on startup; 12 hand-annotated seed passages migrated via `seedStaticPassages()`
- ✅ **Perseus TEI XML ingestion pipeline** (`scripts/ingest-passages.ts`) — stack-based `<div>` parser, 50–150 word chunker, morphology.db auto-annotation, upsert with translation update (`ON CONFLICT DO UPDATE`)
- ✅ **6,195 passages ingested** — 4,874 Latin + 1,321 Greek; word occurrences auto-annotated from morphology.db
- ✅ **Admin panel** — passage browser in Settings (search, language filter, pagination); user list with per-account stats

### Ingested texts (10,527 passages across 45 works)

| Author | Work | Language | Passages | Translated |
|--------|------|----------|----------|------------|
| Caesar | Dē Bellō Gallicō | Latin | 453 | ✅ 453 |
| Cicero | In Catilīnam | Latin | 98 | ✅ 98 |
| Cicero | Dē Amīcitiā | Latin | 139 | — |
| Sallust | Bellum Catilīnae | Latin | 89 | ✅ 87 |
| Nepos | 4 Lives | Latin | 55 | — (no PD eng in Perseus) |
| Livy | Ab Urbe Conditā Books 1–5 | Latin | 4,312 | partial (838) |
| Tacitus | Annālēs | Latin | 57 | — |
| Tacitus | Historiae | Latin | 48 | — |
| Vergil | Aenēis Books 1–6 | Latin | 206 | partial (12) |
| Vergil | Geōrgica | Latin | 97 | — |
| Horace | Carmina (Odes) | Latin | 124 | — |
| Horace | Sermōnēs (Satires) | Latin | 3 | — |
| Ovid | Metamorphōsēs Books 1–5 | Latin | 172 | — |
| Lucretius | Dē Rērum Nātūrā Books 1–3 | Latin | 156 | partial (5) |
| Seneca | Epistulae Mōrālēs | Latin | 509 | — |
| Juvenal | Saturae | Latin | 178 | — |
| Pliny the Younger | Epistulae | Latin | 268 | — |
| Xenophon | Ἀνάβασις | Greek | 478 | ✅ 478 |
| Plato | Ἀπολογία | Greek | 73 | ✅ 73 |
| Plato | Κρίτων | Greek | 36 | ✅ 36 |
| Herodotus | Ἱστορίαι Books 1–2 | Greek | 444 | ✅ 444 |
| Thucydides | Ἱστορίαι Books 1–2 | Greek | 342 | ✅ 337 |
| Lysias | Speeches | Greek | 21 | ✅ 21 |
| Homer | Ἰλιάς Books 1–6 | Greek | 202 | partial (10) |
| Homer | Ὀδύσσεια Books 1–6 | Greek | 156 | partial (7) |
| Sophocles | Οἰδίπους Τύραννος | Greek | 11 | ✅ 11 |
| Sophocles | Ἀντιγόνη | Greek | 7 | — |
| Aristotle | Ἠθικὰ Νικομάχεια Books 1–5 | Greek | 198 | ✅ 144 |
| Aristotle | Πολιτικά Books 1–4 | Greek | 285 | ✅ 285 |
| Demosthenes | Περὶ Στεφάνου | Greek | 188 | ✅ 188 |
| Isocrates | Πανηγυρικός | Greek | 23 | ✅ 23 |
| Euripides | Μήδεια | Greek | 7 | ✅ 7 |
| Euripides | Ἱππόλυτος | Greek | 11 | ✅ 11 |
| Euripides | Βάκχαι | Greek | 10 | ✅ 10 |
| Aeschylus | Ἀγαμέμνων | Greek | 21 | ✅ 21 |
| Aeschylus | Προμηθεὺς Δεσμώτης | Greek | 23 | ✅ 23 |
| Marcus Aurelius | Τὰ εἰς ἑαυτόν | Greek | 254 | — (no PD eng in Perseus) |
| Epictetus | Διατριβαί | Greek | 649 | ✅ 649 |
| Epictetus | Ἐγχειρίδιον | Greek | 41 | ✅ 41 |
| Plutarch | Ἀλέξανδρος | Greek | 68 | ✅ 68 |
| Plutarch | Περικλῆς | Greek | 8 | ✅ 8 |
| Plutarch | Καῖσαρ | Greek | 7 | ✅ 7 |

### Translation coverage

**4,534 / 10,527 passages have translations (43%).** All available Perseus translation files have been tried and exhausted. The untranslated texts have no public-domain English edition in the canonical-latinLit / canonical-greekLit repos.

Untranslated texts and root cause:

| Author / Work | Passages | Reason |
|---|---|---|
| Livy Ab Urbe Condita | 3,474 missing | eng2/eng3 only covers Books 1 intro; full Livy translation not in repo |
| Seneca Epistulae | 509 | No eng file in canonical-latinLit |
| Pliny the Younger Epistulae | 268 | No eng file |
| Marcus Aurelius Meditations | 254 | No eng file in canonical-greekLit |
| Homer Iliad | 192 | eng2/3/4 all cover only 6–10 sections (book-level refs only) |
| Homer Odyssey | 149 | Same |
| Juvenal Saturae | 178 | No eng file |
| Ovid Metamorphoses | 172 | eng2 404 |
| Lucretius DRN | 151 | eng1/2 both 404 |
| Horace Carmina | 124 | No eng file |
| Vergil Georgics | 97 | No eng file |
| Tacitus Annales | 57 | No usable eng file (eng2 produces 0 sections) |
| Tacitus Historiae | 48 | eng1 produces 0 sections |
| Nepos (4 lives) | 55 | No eng file |
| Sophocles Antigone | 7 | eng2 404 |

To improve coverage beyond 43%, passages would need to be sourced from a second corpus (Wikisource, Project Gutenberg, or OGL).

### Text sources (all public domain)

- [Perseus canonical-greekLit](https://github.com/PerseusDL/canonical-greekLit)
- [Perseus canonical-latinLit](https://github.com/PerseusDL/canonical-latinLit)
- [Open Greek and Latin Project](https://github.com/OpenGreekAndLatin)
- [First1KGreek](https://github.com/OpenGreekAndLatin/First1KGreek)
- [The Latin Library](https://www.thelatinlibrary.com/)

---

## Phase 4 — Reading Aids & Parse Enhancements

**Shipped.**

- ✅ **Frequency-based glossing** — Easy: all glosses; Medium: suppress rank ≤30; Hard: suppress rank ≤100
- ✅ **POS color-coding** — amber=verb, sky=noun, emerald=adj, violet=pron; togglable in Settings
- ✅ **Full paradigm tables** — Analyze tab shows collapsible conjugation/declension table from morphology DB
- ✅ **Compound verb analysis** — detects prefix (ἀπο-, re-, etc.) + root, links to root's entry
- ✅ **Full LSJ / Lewis & Short entries** — ingested from Perseus XML, displayed in collapsible panel with hierarchical sense numbering and citation links to Perseus Hopper

---

## Phase 5 — Export & API

- ✅ **REST API documentation** — `docs/API.md` covers `/api/parse`, `/api/parse/stats`, response schemas, curl/Python examples, accentless input, three-tier strategy

### Anki export ✅

**Shipped 2026-03-24.** `GET /api/review/export` returns a tab-separated file (`lector-vocab.txt`) importable by Anki. Front = surface form as seen in text; back = lemma + definition + morphology + passage snippet; tags = language + `lector`. Download button in Settings → Vocabulary section.

---

## Phase 6 — Authentication & Multi-User ✅

**Shipped** 2026-03-18 (commit `04bf6a9`).

- ✅ **Google OAuth 2.0** — one-click "Sign in with Google", zero passwords stored
- ✅ **Multi-user** — each Google account gets fully isolated data (settings, state, SRS queue)
- ✅ **PostgreSQL** — dedicated `lector-postgres` container (separate from conductor), schema auto-created on startup via `ensureSchema()`
- ✅ **Tables:** `users`, `user_settings`, `user_state`, `passage_completions`, `review_items`, `sessions`
- ✅ **Sessions** — `connect-pg-simple` stores sessions in PostgreSQL; 30-day cookie lifetime
- ✅ **Sign-out** button in navbar; Passport.js handles session serialization/deserialization
- ✅ **Graceful degradation** — app starts without Google credentials configured (503 on `/api/auth/google`); `AUTH_ENABLED=false` still works with `"default-user"`
- ✅ **Backups** — `lector` PostgreSQL DB included in nightly conductor backup (`postgres-lector.dump`)

Users are identified by their Google `sub` claim (stable opaque ID). Email + display name + avatar synced on every login. Reaching users: `SELECT email, display_name FROM users;` against `lector-postgres`.

---

## Phase 7 — iOS App (Capacitor)

**Priority: Medium. Two distinct approaches with very different effort levels.**

The web app is already mobile-responsive. Capacitor wraps it as a native iOS app.

### Option A — Remote-backed wrapper (low effort)

Capacitor shell pointing at `https://lector.nerdbox.com`. Native push notifications for daily passage reminders. App Store listing. Requires VPS connectivity — no offline functionality.

### Option B — Offline-capable app (high effort)

Bundle a local SQLite database using the Capacitor SQLite plugin. Cache current passages and their morphology data locally. This requires porting the server-side lookup logic to run client-side, which is a significant rewrite. True offline capability but meaningfully more work.

### Recommended path

Ship Option A first. Offline mode (Option B) is a future enhancement once the user base justifies it.

### Native features worth adding

- Push notifications — "Your daily passage is ready" at a configurable time
- Haptic feedback on parse results and SRS grading
- Home screen widget — today's passage preview or current streak

---

## Phase 8 — Complete Paradigm Tables ✅

**Shipped 2026-03-23.**

Paradigm tables in the Analyze tab are generated rules-based and stored in PostgreSQL at startup. The Morpheus SQLite DB is sparse (only forms found in source texts), so for complete conjugation/declension tables we generate them from principal parts.

### Latin Verb Generation

| Category | Count | Status | Notes |
|----------|-------|--------|-------|
| Regular verbs (1st–4th + 3rd-iō conjugations) | 18 | ✅ Done | 2,406 rows, 102–140 rows/verb |
| Deponent verbs | 721 (DICTLINE + curated) | ✅ Done | passive endings, active voice; periphrastic perfect; pres/fut participle, gerund, gerundive |
| Irregular verbs | sum, possum, volō, nōlō, mālō, eō, ferō, auferō, fīō | ✅ Done | hardcoded tables; full conjugations; ferō syncopated pres; fīō semi-deponent |
| Defective verbs | ōdī | ✅ Done | hardcoded table; perfect system only |

What each regular verb gets: 6 indicative tenses × 2 voices × 6 person/number + 4 subjunctive tenses × 2 voices × 6 + imperatives + full periphrastic perfect passive (PPP + esse) + infinitives + participles + gerund + supine = **140 rows** (102 rows if no pp4/PPP).

### Greek Verb Generation

| Category | Count | Status | Notes |
|----------|-------|--------|-------|
| Regular -ω thematic verbs (παιδεύω type) | ~25 | ✅ Done | All moods/voices/tenses; recessive accent algorithm; 11 new paradigm lemmas |
| Contract verbs (-αω, -εω, -οω) | ~8 | ✅ Done | vowel contraction rules; bulk-seeded from morphology.db |
| Irregular/suppletive (φέρω, λέγω, ἔρχομαι, ὁράω) | 4 | ✅ Done | hardcoded tables; correct suppletive stems (εἶπον, ἤνεγκα, εἶδον, ἦλθον) |
| -μι verbs (εἰμί, φημί, δίδωμι, τίθημι, ἵστημι, ἵημι) | 6 | ✅ Done | hardcoded tables; athematic accents; ἵστημι dual aorists (trans/intr) |

### Declension Generation (After Verbs)

| Category | Count | Status |
|----------|-------|--------|
| Latin nouns (1st–5th declensions + i-stems) | 16,833 | ✅ Done — all DICTLINE nouns + 13 curated; 202K rows |
| Latin adjectives (2-1-2, 3rd decl.) | 16+ curated | ✅ Done — 4 adj types (2-1-2, 3-term, 2-term, 1-term); principalParts-driven |
| Greek nouns (2nd decl, 1st decl, 3rd decl regular types) | 20,226 | ✅ Done — rules-based generator; curated principalParts + morphology.db bulk; 202K rows |
| Greek adjectives | 9 hardcoded + oxytone | ✅ Done — hardcoded tables for νέος/μέγας/πολύς/πᾶς etc.; oxytone generator for ἀγαθός/καλός/μικρός type |
| Pronouns (Latin + Greek) | 17 | ✅ Done — hardcoded tables; Latin: ego/tu/se/is/hic/ille/iste/ipse/qui/quis; Greek: ἐγώ/σύ/αὐτός/οὗτος/ἐκεῖνος/ὅς/τίς |
| Adverbs | — | ➖ Not applicable (invariable) |

### Order of Effort

1. ~~**Greek regular -ω verbs**~~ ✅ Done
2. ~~**Greek contract verbs** (-αω/-εω/-οω)~~ ✅ Done
3. ~~**Latin deponent verbs**~~ ✅ Done (721 verbs)
4. ~~**Latin nouns**~~ ✅ Done (16,833 nouns; 1st–5th decl + i-stems; 202K rows)
5. ~~**Latin + Greek pronouns**~~ ✅ Done (17 tables: 10 Latin, 7 Greek; hardcoded)
6. ~~**Adjectives** — both languages~~ ✅ Done (2026-03-23) — Latin 4 types + Greek oxytone generator + 9 hardcoded tables
7. ~~**Greek nouns (rules-based generator)**~~ ✅ Done (1st/2nd/3rd decl; curated principalParts + morphology.db bulk)
8. ~~**-μι verbs**~~ ✅ Done (2026-03-23) — hardcoded tables for εἰμί, φημί, δίδωμι, τίθημι; athematic accents preserved
9. ~~**Latin irregular/defective verbs**~~ ✅ Done (2026-03-23) — auferō (ferō-type present), fīō (semi-deponent), ōdī (perfect system only)
10. ~~**Greek suppletive verbs**~~ ✅ Done (2026-03-23) — φέρω, λέγω, ἔρχομαι, ὁράω; correct aorist/perfect stems hardcoded
11. ~~**Latin core irregulars**~~ ✅ Done (2026-03-23) — sum, possum, volō, nōlō, mālō, eō, ferō; full conjugations hardcoded
12. ~~**Greek -μι gaps**~~ ✅ Done (2026-03-23) — ἵστημι (dual aor1 trans/aor2 intr), ἵημι; athematic present + aorist systems

**Phase 8 is complete.** All major paradigm categories for Latin and Classical Greek are now covered.

---

## Architecture Principles

These carry forward through all phases:

1. **No external API calls at runtime.** All morphological analysis and dictionary lookups served from local data.
2. **Graceful degradation.** SQLite morphology DB → Morpheus sidecar → in-memory inflection tables → external Logeion/Perseus links.
3. **Diacritics-stripped indexing.** Mobile keyboards don't produce polytonic Greek. Always maintain a bare-form lookup path.
4. **Open data, open tools.** Morpheus (MPL-2.0), lexical data (public domain), Logeion shortdefs (CC BY-SA). App code: MIT.
5. **Self-hosted first.** Runs on your own VPS with zero cloud dependencies.

---

## Phase 9 — Biblical Greek ✅

**Shipped April 2026.**

Added the complete Greek Bible as a corpus — the Septuagint (LXX) Old Testament and the Koine Greek New Testament — bringing total passages to ~17,500.

### What shipped

- ✅ **7,055 biblical passages** — full Greek Bible, OT and NT, chunked to 40–160 words by verse boundaries
- ✅ **`genre_tag = 'biblical'`** — biblical passages excluded from classical modes; only served to users who opt in
- ✅ **`biblical_greek` language mix** — opt-in: all passages from the Greek Bible
- ✅ **`alternate_biblical` language mix** — 3-way rotation: day%3=0 Latin, day%3=1 Classical Greek, day%3=2 Biblical Greek
- ✅ **TFLSJ (Abbott-Smith) lexicon** — entries link to STEP Bible interlinear; NT → Textus Receptus (`version=TR`), LXX → LXX interlinear (`version=LXX`)
- ✅ **NT ingestion script** — `scripts/ingest-nt.ts`
- ✅ **LXX ingestion script** — `scripts/ingest-lxx.ts`

### New Testament (1,395 passages)

Sourced from SBLGNT via MorphGNT — every word has lemma, POS, and full 8-char morphological parsing code pre-annotated.

| Book | Passages | Translation |
|------|----------|-------------|
| Matthew | 118 | ✅ WEB |
| Mark | 80 | ✅ WEB |
| Luke | 118 | ✅ WEB |
| John | 98 | ✅ WEB |
| Acts | 111 | ✅ WEB |
| Romans–Revelation (22 books) | 670 | ✅ WEB |
| **Total** | **1,395** | **✅ 100%** |

### Septuagint / LXX (5,649 passages)

Sourced from the Swete LXX (nathans/lxx-swete, CC BY-SA 4.0). Morphology is best-effort from morphology.db + Morpheus sidecar at read time (same as classical corpus — no per-word pre-annotation available for LXX).

| Book | Passages | Translation |
|------|----------|-------------|
| Genesis | 321 | ✅ Brenton |
| Exodus | 240 | ✅ Brenton |
| Leviticus | 185 | ✅ Brenton |
| Numbers | 245 | ✅ Brenton |
| Deuteronomy | 215 | ✅ Brenton |
| Joshua | 143 | ✅ Brenton |
| Judges | 151 | ✅ Brenton |
| Ruth | 20 | ✅ Brenton |
| 1 Samuel | 191 | ✅ Brenton |
| 2 Samuel | 169 | ✅ Brenton |
| 1 Kings | 183 | ✅ Brenton |
| 2 Kings | 177 | ✅ Brenton |
| 1 Chronicles | 158 | ✅ Brenton |
| 2 Chronicles | 203 | ✅ Brenton |
| 1 Esdras | 86 | ✅ Brenton |
| Ezra-Nehemiah | 123 | — (complex book split) |
| Esther | 52 | ✅ Brenton |
| Judith | 89 | ✅ Brenton |
| Tobit | 51 | ✅ Brenton |
| 1 Maccabees | 180 | ✅ Brenton |
| 2 Maccabees | 116 | ✅ Brenton |
| 3 Maccabees | 50 | ✅ Brenton |
| 4 Maccabees | 80 | ✅ Brenton |
| Psalms | 356 | ✅ Brenton |
| Odes | 36 | — (not in Brenton) |
| Proverbs | 115 | ✅ Brenton |
| Song of Solomon | 21 | ✅ Brenton |
| Job | 140 | ✅ Brenton |
| Wisdom | 68 | ✅ Brenton |
| Sirach | 191 | ✅ Brenton |
| Psalms of Solomon | 50 | — (not in Brenton) |
| Hosea | 39 | ✅ Brenton |
| Amos | 32 | ✅ Brenton |
| Micah | 24 | ✅ Brenton |
| Joel | 16 | ✅ Brenton |
| Obadiah | 5 | ✅ Brenton |
| Jonah | 11 | ✅ Brenton |
| Nahum | 10 | ✅ Brenton |
| Habakkuk | 11 | ✅ Brenton |
| Zephaniah | 12 | ✅ Brenton |
| Haggai | 9 | ✅ Brenton |
| Zechariah | 49 | ✅ Brenton |
| Malachi | 14 | ✅ Brenton |
| Isaiah | 270 | ✅ Brenton |
| Jeremiah | 284 | ✅ Brenton |
| Baruch | 27 | ✅ Brenton |
| Lamentations | 24 | ✅ Brenton |
| Epistle of Jeremiah | 13 | ✅ Brenton |
| Ezekiel | 284 | ✅ Brenton |
| Susanna | 10 | ✅ Brenton |
| Daniel | 102 | ✅ Brenton |
| Bel and the Dragon | 9 | ✅ Brenton |
| **Total** | **5,649** | **~95% translated** |

### Text sources

| Data | Source | License |
|------|--------|---------|
| NT Greek text | [SBLGNT](https://sblgnt.com/) (Society of Biblical Literature) | CC BY 4.0 |
| NT morphological annotations | [MorphGNT](https://github.com/morphgnt/sblgnt) | CC BY-SA 3.0 |
| NT translation | World English Bible (WEB) via bolls.life | Public domain |
| LXX Greek text | [nathans/lxx-swete](https://github.com/nathans/lxx-swete) (Swete edition) | CC BY-SA 4.0 |
| LXX translation | Brenton (1851) via bolls.life LXXE | Public domain |
| Lexicon | Abbott-Smith TFLSJ | Public domain |

---

## Data Sources & Licenses

| Data | Source | License |
|------|--------|---------|
| Morphological forms | [Morpheus](https://github.com/perseids-tools/morpheus-perseids) (Perseus Project) | MPL-2.0 |
| Greek & Latin short definitions | [helmadik/shortdefs](https://github.com/helmadik/shortdefs) (Logeion, Univ. of Chicago) | CC BY-SA |
| LSJ / Lewis & Short lexical data | Perseus Digital Library | Public domain |
| Greek texts | [PerseusDL/canonical-greekLit](https://github.com/PerseusDL/canonical-greekLit) | Public domain / CC |
| Latin texts | [PerseusDL/canonical-latinLit](https://github.com/PerseusDL/canonical-latinLit) | Public domain / CC |
| Treebank data | [Perseus Ancient Greek & Latin Dependency Treebanks](https://perseusdl.github.io/treebank_data/) | CC BY-SA |
| NT Greek text | [SBLGNT](https://sblgnt.com/) + [MorphGNT](https://github.com/morphgnt/sblgnt) | CC BY 4.0 / CC BY-SA 3.0 |
| NT translation | World English Bible (WEB) | Public domain |
| LXX Greek text | [nathans/lxx-swete](https://github.com/nathans/lxx-swete) (Swete edition) | CC BY-SA 4.0 |
| LXX translation | Brenton (1851) via bolls.life LXXE | Public domain |
