Vanilla JS IndexedDB bible-api.com GitHub Pages

Bible Study Suite

Browser-based Bible study app with Bible reading, note-taking, verse context, per-note audio recordings, and per-note songs/lyrics. All data stored locally.

Bible Study Suite β†’
Bible Study Suite demo

πŸ—ΊοΈ Quick Navigation

Section What You Get
Features Bible reader, notes, red-letter text, songs, recordings
Architecture App flow and storage model
Tech Stack Source files and their roles
Data Storage localStorage and IndexedDB breakdown
Run Locally Local server setup
Troubleshooting Fast fixes for common issues

✨ Features

πŸ“–

Bible Reading

Select book, chapter, and translation. Prev/next navigation. Search verse refs like John 3:16 to jump directly. Click a verse to insert its reference into notes.

πŸ”΄

Red-Letter Text

Quoted speech in Matthew, Mark, Luke, and John is highlighted in red β€” just like a red-letter Bible.

πŸ“

Notes

Create, edit, and autosave notes. Sidebar list for fast recall. Verse references typed in notes are auto-detected and rendered in the context sidebar.

πŸ“œ

Referenced Verses Sidebar

Automatically fetches verse text for any references found in your notes. Shows reference cards and lets you jump to them instantly.

πŸŽ™οΈ

Per-Note Audio

Record audio in-browser using your microphone. Recordings attach to the current note. Playback, download, and delete β€” persisted in IndexedDB.

🎡

Per-Note Songs

Add a song title and lyrics to any study note. View, delete, or insert saved songs directly into note content.


πŸ—οΈ Architecture

App flow: index.html β†’ apps.js β†’ notes.js / audio.js / bible.js β†’ bible-api.com / localStorage / IndexedDB

Entity Fields
NOTE id, title, content, translation, timestamp
SONG id, title, lyrics, createdAt, noteId
RECORDING id, noteId, timestamp, duration, blob (IndexedDB)

πŸ”§ Tech Stack

File Role
index.html App layout and UI containers
style.css Custom styling
apps.js Main controller, chapter rendering, navigation, search
bible.js Bible metadata, regex parsing, API calls to bible-api.com
notes.js Notes management, autosave, verse detection, songs UI/data
audio.js Recorder, waveform visualizer, IndexedDB audio persistence
Vanilla JS IndexedDB localStorage bible-api.com GitHub Pages Web Audio API

πŸ’Ύ Data Storage

πŸ—„οΈ

localStorage

bibleStudyNotes β€” notes array (title/content/references/songs)

bibleStudyRecordings β€” recording metadata backup

πŸ“¦

IndexedDB

Database: BibleStudyDB
Store: recordings
Fields: id, noteId, timestamp, duration, type, blob

πŸ”’

Privacy

Microphone access only when recording. All notes and audio stored locally in your browser. Bible text fetched from bible-api.com only.


πŸš€ Run Locally & Deploy

πŸ’»

VS Code Live Server

Install the Live Server extension, right-click index.html β†’ Open with Live Server β†’ http://127.0.0.1:5500/

🐍

Python

cd biblestudy
python -m http.server 8000
β†’ http://localhost:8000

πŸ“„

GitHub Pages

Push to main β†’ Settings β†’ Pages β†’ Deploy from branch β†’ main / root. Live in 5–10 min.


πŸ› οΈ Troubleshooting

Issue Fix
Blank Bible panel Use HTTP server (Live Server), not file://
No microphone Grant permission when prompted
Recordings disappear Avoid incognito β€” IndexedDB is cleared in private mode
GitHub Pages slow 5–10 min deploy time β€” Ctrl+Shift+R to hard refresh