Skip to content
Interactive bible cross reference charts using D3.js, with multiple translations from an SQL database
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Flare Bible Study

An App Intended for Presentations and Fit for Scriptural Research

Here you will find an app that can map cross references and subjects at the same time, in a couple of ways. This relies on user created scriptural cross reference data, and you'll need to create your own additional JSON files, or extend the ones in this project.

Table of contents


Currently flare uses only public domain bible translations:

  • American Standard-ASV1901 (ASV)
  • Bible in Basic English (BBE)
  • Darby English Bible (DARBY)
  • King James Version (KJV)
  • Webster's Bible (WBT)
  • World English Bible (WEB)
  • Young's Literal Translation (YLT)

Technical Summary

  • / (HTML)
    • index.html is the latest chart being developed, the data is only demo data and not fully fledged out.
    • Jesus-in-the-old-testament.html (HTML) this uses the hierarchical edge bundling chart (hierarchical many to many relationships) which is great for subject mapping and for presentations. A copy of this page can host different chart data by modifying the JSON file name near the end of the document.
  • /assets/css/ (CSS)
    • flare.css contains:
      • Flare specific CSS for both HTML pages
      • Dashboard style mods (near the end of the document)
    • style.css contains dashboard specific CSS.
    • components.css contains dashboard specific CSS
  • /assets/js/ (JavaScript)
    • flare.js contains:
    • flare-biblestudy.js contains:
    • functions.js contains primarily dashboard functionality, but the end of the file also has document ready javascript used by both HTML pages.
  • /assets/json/ (JSON)
    • para.json contains demo data used for cross references in index.html. This is the one you can modify for your own cross reference threads.
    • flare-OldTestamentJesus1.json contains demo data for cross references and subject mapping in . They are called from their respective pages.
    • kjv.json contains bible stats based on data from the King James translation.
  • /assets/database/ (PHP/MySQL)
    • ajax.php uses HTTP GET parameters to wrap specified scriptures in HTML. Creates a Librarian object, prepares statements, and specifies the translation to query. un-comment the error checking statements (don't move them) to troubleshoot
    • bible_to_sql_service.php Librarian extends Servant. Only upon successful preparation of a statement can Librarian query the database. use the construct function in Servant to specify host, user, password, and database. **Both classes contain extra functions for testing


Contributing cross references

At a bare minimum, you will need to know some basic JSON know how to create new cross reference content. Feel free to use the additional JSON files at for a launching point.

Contributing code

JavaScript, jQuery, JSON are the primary technologies used, with HTML and CSS for layout and styling. However AJAX, PHP, and MySQL are also involved. I'd be excited to have a contributor to the project!

Development Guide

To Get Started

  1. You'll need a WAMP, LAMP, or other web server (I'm running Apache2 with a localhost setup in Linux for development)
  2. MySQL 5.7 installed
  3. PHP 7.2 installed
  4. mysqli/mysqlnd enabled. Ubuntu how-to
  5. Complete the Bible Database Setup
  6. Clone the repo: git clone, or download wget and unzip to your localhost path.

Bible Database (db) Setup

Use phpMyAdmin or MySQL statements to accomplish these tasks.

Notes: the default database name in bible_to_sql_service.php is bible_db, and I will assume that's the name in the instructions.

Task 1

Create a database, localhost db user, password, and set user rights for the db

Task 2

import the all_translations.sql file into the db you created

Using phpMyAdmin

An easy way to do this is use phpMyAdmin.

  1. Login to phpMyAdmin
  2. Create a database named bible_db
  3. Create a user named 'bible'@'localhost' (or name it whatever you want for that matter. Just modify the Servant class construct function accordingly in bible_to_sql_service.php.
  4. Edit privileges for your user using the database option, and grant all data and structure privileges for bible_db.
  5. Select bible_db, then use the Import tab to import the /sql/all_translations.sql file into bible_db.
  6. Go modify the Servant class construct function in bible_to_sql_service.php to match your host, user, password, and database configuration.
  7. You're done. Not displaying scriptures? Use the Troubleshooting Errors if you know what you're doing.

Using MySQL

In this method, you'll accomplish the tasks using the command line.

  1. First login with your root account.

mysql -u root -p

  1. Create a localhost user: for example, with the name bible (replace YOURPASSWORDHERE with your own, but keep the hyphens):


  1. Create a database named bible_db:


  1. Grant just enough privileges for the user bible to manage the database:


  1. In Linux (or with MobaXterm in Windows), navigate to the /sql/ folder, or open a terminal there, and use this command to import all_translations.sql into bible_db. You will be prompted for your root mysql password

mysql -u root -p bible_db < all_translations.sql

  1. Make sure you modify the Servant class construct function in bible_to_sql_service.php to match your host, user, password, and database configuration.

  2. You're done. Not displaying scriptures? Use the Troubleshooting Errors if you know what you're doing.

Troubleshooting Errors

This will enable php to return error messages that show what is happening, Un-comment the logging statements in ajax.php, so the top of the file looks like this:

<?php ini_set('display_errors', 1);/// for debugging error_reporting(E_ALL);/// for debugging

Reload your page and use the error messages displayed by AJAX to correct them, or to reference when asking for help. The error messages will be displayed where the scriptures should be on each page.

Todo list

  • More well thought out JSON cross reference data, and subjects
  • Minor Ui improvements like toggling the arrow when tapping off of the side-bar on small screens
  • Create similar editing interface to create JSON files with the visual aid. they are currently programmed one line at a time.
  • Get out of the demo stage for JSON data - I've created the cross referencing in para.json and flare-OldTestamentJesus1.json on my own.
  • Convert the project using Vue Native for mobile
    • Convert to using JSON or SQLite bible databases for use in Android


Flare is based on features from these projects:


The source code in the sql directory is distributed as free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Full sql directory license details here

Relevant source code in the root and assets directories are licensed under the MIT license.

All contributions will be licensed in a similar fashion.

You can’t perform that action at this time.