Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
Read random Bible chapters, track progress, add questions, and practice memorization
Translation pending
AI summary · website content
EducationJavaScript · PythonGitHub @Yeshua-KuriosOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A tiny static web app that gives you a random, never-repeated Bible chapter to read, and keeps track of what you've already read so you can work through the whole Bible in random order without duplicates.
localStorage (per browser,
not synced across devices).reading-log.json in a private GitHub repo
(via the GitHub Contents API), so other tools (like a commentary pipeline)
can look up what you read today. Using GitHub's API instead of a bespoke
backend keeps the log reachable from sandboxed environments that only
allow a small domain allowlist. The token is never stored in this repo —
only in your browser's localStorage — and should be a fine-grained
personal access token scoped to just that one repo's Contents permission.crypto.getRandomValues) with
rejection sampling, rather than Math.random(). See "How random is it?"
below.Highlight any words in the reader and tap "Memorize" (or tap a verse number and
choose "Memorize verse", or add a passage by reference) to save it to the
"Scripture memory" section. Practice runs in the app with no LLM: fill in the
blanks, then first letters, then typing it from memory (passing at 90% of the
words). Passed items come back after 1, 3, 7, 14, 30 and 60 days; a miss starts
over at the easiest step. Passing a review that is due earns XP (2 to 10 by step, more for longer passages, 20 a day at most; early practice and retries earn none), added to your lifetime XP like trivia XP. Items live in localStorage (rbc:memory) and are
included in the cloud backup. Code is in memory.js.
Just open index.html in a browser, or serve the folder with any static
file server, e.g.:
python3 -m http.server
This repo includes a GitHub Actions workflow
(.github/workflows/deploy.yml) that deploys the site on every push to
main. To enable it:
main (or re-run the workflow) — the site will be published at
https://<username>.github.io/<repo>/.Your level is meant to be an honest signal of how much time you've actually spent reading Scripture — something you could tell a friend and have it mean something — so it's deliberately hard to inflate:
The one true reset is "Erase everything & start over" under Reading history, which wipes your level and completions too — for when you actually want to start from zero.
To make coming back every day feel good:
If you save a sync token (see "Reading log sync & cloud backup" in the app),
a full snapshot of your progress — history, achievements, lifetime level, and
streak freezes — is saved to app-backup.json in your private repo after
every chapter. If the browser ever wipes this site's data, paste your token
again and tap Restore from cloud.
The chapter you draw appears below the card in the King James Version, with verse numbers, paragraph breaks, and the translators' italics (the words they supplied that aren't in the original). A second "Mark as Read" button sits under the text so you don't have to scroll back up.
The text lives in kjv/, one small JSON file per book, and only the book you
need is fetched. Nothing is stored server-side. Because it's fetched, the
chapter text needs a connection (the rest of the app doesn't).
Where the text comes from. The 1769 King James text is in the public
domain in the US (in the UK it is covered by a Crown letters patent, which
affects printing rather than reading). I took it from
farskipper/kjv (public domain), after
cross-checking it against two other public digitizations: all three agree on
the verse structure (66 books, 1,189 chapters, 31,102 verses). It matched one
of them on 31,041 of 31,102 verses, and the 61 differences were spelling
variants (e.g. "honour" vs "honor") or errors in the other file, not
different wording. A third file had encoding damage and stray margin notes,
so it wasn't used. If you spot a typo, it can be fixed in the matching
kjv/<book>.json.
Under the text, My questions is a notebook for questions you have while reading, in any Bible version (KJV, NKJV, ESV, NIV, NLT, NASB, CSB, NRSV, AMP, MSG, or type your own). Each question records its passage (defaults to the chapter you're on, or tap a verse number to target that verse) and the version you were reading.
When you're done, Copy all as an LLM prompt puts every question on the
clipboard with short instructions for the model (answer from the passage
first, explain what the Hebrew/Greek behind a translation says, flag where
scholars disagree, don't invent sources). Tick "Also include the KJV text of
each passage" to append the King James text of each passage you referenced
(John 3:16, Romans 8:1-4, Psalm 23, ...). Passages it can't read are
listed rather than silently dropped. Questions are part of your backup and
cloud backup, and "Erase everything" removes them too.
A trivia section built to teach you things you don't already know — obscure ancient-Near-East background, archaeology, rare Hebrew/Greek/Aramaic words, hapax legomena. Every question is a mini-lesson: the explanation always shows, whether you got it right or not.
sqrt(200 / bank size), so growing the bank can't turn trivia into the main
source of XP. TRIVIA_COVERAGE.md has the plan for growing it.The fact bank is split by theme: trivia.js (core), trivia-prophecy.js
(oracles set beside the extrabiblical records and excavations that bear on
them), trivia-archaeology.js, trivia-language.js (rare words, loanwords,
manuscripts), trivia-ane.js (Near Eastern background), trivia-discoveries.js (major finds and how they were made, including celebrated claims that did not hold up), trivia-greek-aramaic-texts.js (Greek and Aramaic vocabulary, manuscripts and textual history), trivia-warmups.js (easier tier 1–2 facts across the other themes) and trivia-deep.js (tier 4–5 specialist facts). Each card can
carry an src field naming the inscription, text, or excavation behind it,
shown as "Evidence" after you answer.
Prophecy cards are written to separate what the sources document from what scholars dispute — for example when Isaiah 40–55 or Daniel was composed, or whether Tyre's later history matches Ezekiel 26 literally — rather than claiming more than the evidence shows.
To add facts, push cards onto TRIVIA_CARDS from any trivia-*.js file and
load it in index.html (never rename or reuse an id, since progress is
stored by id). Keep the three wrong answers close in length and style to the
right one so length isn't a clue. Trivia progress is included in backups,
cloud backup, and reset.
The app uses crypto.getRandomValues(), the browser's cryptographically
secure pseudorandom number generator (CSPRNG), instead of Math.random().
It's seeded from the operating system's own entropy sources and is good
enough for security-sensitive uses like generating tokens — well beyond
what's needed here, but it also avoids the subtle statistical biases
Math.random() can have. The selection is also done via rejection
sampling over the exact number of unread chapters, so every remaining
chapter has an equal chance of being picked (no modulo bias).
True hardware randomness (e.g. from atmospheric noise or radioactive decay) isn't available to a browser sandbox, so this is the strongest randomness a client-side web app can offer.