This web application allows users to search for word sequences—case-sensitive or case-insensitive—across a custom selection of Bible books.
Features
- Multi-book and multi-version search
- Logical AND (+) and OR (,) search syntax prioritized with parentheses
- Case sensitivity toggle
- Book selector grouped by Testament and Section
- Responsive UI with collapsible book selector
- Optional themes: Light ☀️, Dark 🌙, and High Contrast ⚫
Hosted live at aaronjs.pythonanywhere.com.
Originally built with Flask, now rebuilt using Django for better scalability and maintainability.
This guide will help you set up and run the Multi-Book Advanced Bible Search (mBAB) project locally for development or customization.
- Django Official Documentation
- Jinja Template Syntax — used for templating
- Python
sqlite3
Module - Tailwind CSS — for utility-first styling
- Python 3.11 or higher
pip
andvenv
(usually bundled with Python)- A Unix-like shell (Linux/macOS or WSL on Windows recommended)
make
(optional but recommended for easier setup and management)
# Clone the codebase repository
git clone https://github.com/aaronjohnsabu1999/mBAB.git ~/mBAB
cd ~/mBAB
# Set up a virtual environment
make venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
make install
# Apply Django migrations
make migrate
To keep the main repo lightweight, the SQLite Bible databases are hosted separately.
Download or clone them from Bible Databases and place the .db
files inside a folder named databases/
at the root of this project.
# Clone the database repository
mkdir ~/mBAB/databases/
git clone https://github.com/aaronjohnsabu1999/bible-databases.git ~/bible-databases/
# Move databases to codebase directory
cp ~/bible-databases/DB/*.db ~/mBAB/databases/
Start the Django development server using make:
make run
This will run the server at 127.0.0.1:8000
. Open your browser and navigate to http://localhost:8000/.
Override the host and/or port by passing variables:
make run HOST=0.0.0.0 # Binds to all interfaces
make run HOST=0.0.0.0 PORT=8080 # Custom port
Then visit in your mobile browser: http://<your-computer-local-ip>:8000/
. To find your local IP:
# On Linux/macOS
hostname -I
# On Windows
ipconfig
Note: Ensure both devices are on the same Wi-Fi and that your firewall allows access on the selected port.
Formatting and design feedback have been generously provided by my parents, Sabu John and Jessy Sabu John, along with several other users. Flask development support was offered extensively by @hbhoyar. The searchable Bible content is based on SQL databases originally published by @scrollmapper and later cleaned and reorganized by me. To keep this repository lightweight and easy to clone, those databases have been moved to a separate repository: Bible Databases.
- Add pagination for search results
- Include search within verse ranges (e.g., John 3:16–21)
- Include fuzzy matching or stemming (e.g., "loves" → "love")
- Include natural language search (e.g., "verses about forgiveness")
- Track recent or most common searches
- Subdivide books by genre (Law, Gospels, etc.)
- Enable logical grouping and parentheses in search syntax
- Add optional user accounts with saved history
- Allow bookmarking/saving of favorite verses (via local storage or user accounts)
- Provide user manual
- Support multi-language display (e.g., Spanish, Hindi, Malayalam)
- Enable keyboard-only navigation mode
- Support copyrighted Bible versions (NIV, NLT, BSI, etc.)
- Provide API access for other apps/church tools to integrate Bible search
- Add loading animations or skeletons on long queries
- Make the UI fully responsive for mobile screens
- Move controls into a collapsible sidebar
- Improve styling with more theme options