Table of Contents
Design Choices
Here we will briefly discuss which strategies and technologies we will use to develop the NSB app.
Deprecated
This page will be deleted later as it no longer reflects how the program (at www.noachide.ca/bible) is swt-up to work.
Target Environment & Languages
The target environment will be the web; this gives us a target market of all connected devices. Thus the languages used will be HTML5/CSS, PHP and MySQL for the server side, and JavaScript for the client side. We may use WebAssembly if and when it becomes usable (and appropriate) as well as any other scripting language which we can include in a web page (ex. Swift).
I expect the majority of the code to be in PHP because at the least everything will be supported by the API. In that sense every other interface will be a UI accessing the app via the API.
Database
The Database, as mentioned above, will be generally SQL compliant, such as MariaDB. It will be a central database such that (see UI below) all the data served will come from one database, versus having each program own a separate copy of the data. However, each program may cache up to an entire copy of the database, as it is used by the user. This will ease loads on the DB and make the program appear faster. Caching!
See: Database Design
UI / API
There will be a minimal UI for testing and minimal use, with the development of a full API for use in creating native versions of the app. We will use bootstrap (currently 4.3.1) in the development of the API and minimal UI. The API is the base of the app; the back-end. Then, there is a front-end which only exists to ease access to the API. Thus, the API will define all the available feature of the program. The UI will be a tack-on for various platforms; although a baseline UI exposing all features will be present for the web. jQuery and others can be included (for example) via:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> ... <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.15.0/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> /* or, older versions with integrity check: <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> */
Next: