No description
  • Rust 63.9%
  • QML 17.1%
  • Shell 11%
  • Python 5.1%
  • C++ 2.3%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Austin Schaefer d9a728b165
Some checks failed
CI / changes (push) Successful in 4s
CI / rust (push) Successful in 4m6s
CI / audit (push) Successful in 10s
CI / app (push) Successful in 2m30s
CI / e2e (push) Failing after 14m32s
CI / click (push) Has been skipped
Merge pull request 'docs/design-html-mockups' (#162) from docs/design-html-mockups into main
Reviewed-on: #162
2026-11-03 21:31:15 +00:00
.claude Claude Code config: smaller start-up context for this repo 2026-10-28 16:57:35 +01:00
.forgejo/workflows Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
.githooks Repo setup: app skeleton, CI and quality gates (phase 0 done) 2026-10-20 15:05:39 +02:00
assets icon: the pedestal lectern (H2) as the app icon; the L monogram kept in docs/10 (#95) 2026-10-31 17:42:31 +01:00
core first start: a short title per module and a note of what it offers (#148) 2026-11-03 18:15:46 +01:00
docs docs: export the design canvas's boards to docs/design as plain HTML 2026-11-03 22:29:44 +01:00
po about: a dialog with the icon, build and source, and a licences page, E10 (#148) 2026-11-03 19:10:15 +01:00
presets first start: a short title per module and a note of what it offers (#148) 2026-11-03 18:15:46 +01:00
qml about: the icon's rounded corners are transparent, not black (#148) 2026-11-03 19:42:46 +01:00
qt about: a dialog with the icon, build and source, and a licences page, E10 (#148) 2026-11-03 19:10:15 +01:00
spikes Spike S4: module data report and resumable download 2026-10-20 13:44:17 +02:00
sword catalog: a Bible with a versification the reader lacks is listed greyed with a reason (#124) 2026-10-30 16:46:02 +01:00
tools e2e: about wants the conf's licence, not any text after the module's name (#161) 2026-11-03 19:51:21 +01:00
.clang-format Repo setup: app skeleton, CI and quality gates (phase 0 done) 2026-10-20 15:05:39 +02:00
.clang-tidy Repo setup: app skeleton, CI and quality gates (phase 0 done) 2026-10-20 15:05:39 +02:00
.gitattributes v11n: verse counts in a data file, one ini reader for both crates 2026-10-21 12:59:42 +02:00
.gitignore Repo setup: app skeleton, CI and quality gates (phase 0 done) 2026-10-20 15:05:39 +02:00
Cargo.lock tools, ci: check the starter sets against CrossWire's live index 2026-10-21 21:06:37 +02:00
Cargo.toml tools, ci: check the starter sets against CrossWire's live index 2026-10-21 21:06:37 +02:00
CLAUDE.md docs: export the design canvas's boards to docs/design as plain HTML 2026-11-03 22:29:44 +01:00
clickable.yaml Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
clippy.toml Repo setup: app skeleton, CI and quality gates (phase 0 done) 2026-10-20 15:05:39 +02:00
CMakeLists.txt Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
deny.toml sword: installer with resumable download, rawzip install and remove, repository index 2026-10-21 20:56:58 +02:00
lectern.apparmor Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
lectern.desktop Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
LICENSE Add GPL-3.0 licence 2026-10-19 10:47:31 +02:00
Makefile.toml ui: colour roles in SystemColours; paper and warm dark grounds, lapis numbers and markers (#95) 2026-10-30 19:28:26 +01:00
manifest.json Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
NOTICES.md icon: the pedestal lectern (H2) as the app icon; the L monogram kept in docs/10 (#95) 2026-10-31 17:42:31 +01:00
README.md Rebrand to Lectern: app id lectern.aps, name, packaging, translation domain (#95) 2026-10-31 17:11:50 +01:00
rustfmt.toml S2 SWORD core: Rust zText/zCom reader matching SWORD, scan within budget 2026-10-19 14:42:57 +02:00

Lectern

Lectern is offline Bible study: a native app for Ubuntu Touch, and later other Linux phones, with the study features of AndBible in a design of its own. It's for people whose phones can't run Waydroid, and it is meant to run well on old, low-memory phones. It reads the same SWORD modules as AndBible.

Core features (docs/04-features.md):

  • Starter sets: a ready-made download of recommended Bibles, lexicons and cross-references on first run
  • Strong's / Greek and Hebrew references, toggled with one tap; tap a word for its lexicon entry and parsing
  • Words of Jesus in red (where the module marks them)
  • Verse per line or running text, with adjustable spacing
  • Concordance: Strong's (grouped by translation), word, and topical (Nave's, Torrey's)
  • Cross-references you can follow: popup with the verse text, jump, back to where you were; Treasury of Scripture Knowledge for every verse

Status: phase 0 done (spikes under spikes/; the SWORD reader lives in sword/). The app skeleton opens the first installed Bible and pages through chapters; phase 1 (a real reader) is next.

The decision in short

Layer Choice
Core logic Rust workspace with no Qt dependency (sword, core)
SWORD modules Our own pure-Rust reader (sword/), written from the file formats and pinned to SWORD's output by golden tests; versification tables and book names from JSword (LGPL-2.1-or-later). Not libsword: it is GPL-2.0-only
Text rendering Native: Rust builds a render model, and QML shows it in a ListView of rich-text blocks. No web view anywhere
UI QML with QtQuick.Controls 2 (Suru style on UT). Lomiri only in a thin platform layer
Rust ↔ Qt cxx-qt: QObjects and list models declared in Rust over the Qt-free crates (spike S3)
Storage One SQLite file (rusqlite), our own schema. State saved within about 1 s of a change
Search, concordance Scans the compressed text directly, no index for Bibles. Optional tantivy index for big modules
Sync Our own format over Nextcloud/WebDAV (v0.4). Foreground only, atomic uploads. Optional one-way AndBible import
Targets UT 24.04: Volla phones perfect (tier 1), community ports good-faith (tier 2). Later UT 26.04 / Qt 6, and Flatpak for other Linux phones. No UT 20.04
Licence GPL-3.0-or-later

Resource budgets (targets): ≤ 80 MB peak PSS with one window, ≤ 2 s cold start, ≤ 15 MB click, on a 3–4 GB phone from about 2019–2020 (the original Volla Phone sets the speed budgets).

Documents

  1. docs/01-pathway.md: phased roadmap, starting with four spikes
  2. docs/02-tech-stack.md and docs/02-tech-stack-app.md: decisions D1–D4 and D5–D11, with the options that were rejected
  3. docs/03-architecture.md: crates, render model, data flow, threading, testing
  4. docs/04-features.md: the core features F1–F6, other features → releases and effort, design direction
  5. docs/05-risks.md
  6. docs/06-sources.md: what was checked, and what still needs checking
  7. docs/07-platform-constraints.md: Ubuntu Touch's suspension, confinement and other limits, how we handle them, and the resource budgets
  8. docs/08-module-presets.md: proposed starter sets, candidate modules with features and licences, data gaps
  9. docs/09-quality-gates.md: the Rust, C++ and QML gates, where each runs, and what comes next

Relationship to AndBible

This is an independent community project, not affiliated with or endorsed by the AndBible team. AndBible's feature set is the inspiration; the UI, database and sync format are our own. It ports module-reading logic from JSword (LGPL-2.1-or-later). The name is a placeholder that avoids existing Bible-software trademarks.