Encouraging Biblical study and engagement through a dynamic online platform
This is our implementation of the system design presented during the Fall 2015 Information Systems Analysis class. The application is built on top of Flask.
- Python 3.3+
- Node Package Manager
Our main development IDE is PyCharm, which handles Python dependancy installation automatically. However if you want to install the dependancies manually, we are using virtualenv and PIP.
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
Front-end dependancies and builds are handled with NPM and Grunt. Make sure you have both installed.
$ npm install
The database can be created within PyCharm using
app/db/create-db.sql, or you can create it manually from the command line. You should create a file called
database.db (or manually configure the path in
$ sqlite3 app/database.db
sqlite> .read app/db/create-db.sql;
The app allows you to create all the necessary data from within the site (users, readings, posts, etc...) but you can also optionally create some test data by reading in
Now that you've installed all the dependancies, start the application.
$ python run.py
In our application we are using the Bible Gateway API to get access to our scripture. For any of this functionality to work you must first create a file with an unexpired access token from Bible Gateway. Read the Bible Gateway API documentation for more information on the API.
This file should be titled "bg-keys.json" and stored in the application root. Inside this file should be the following:
"access_token": "INSERT UNEXPIRED ACCESS TOKEN HERE"
The access token must be updated every two weeks or else it will expire.
Front-end development should be performed in the
src/ folder. We are using SASS for our front-end styles. Each piece of the stylesheet should be written in a modular system to encourage the DRY principle.
Development on the Flask application occurs in
app/. We are following a module system. Individual features of the application (such as plans, accounts, readings, groups, etc..) should be split out into their own module. Each module should contain
forms.py with each piece of functionality split up accordingly. Controllers should be implemented as blueprints which are then instantiated on the main app controller in
Tests are an important part of maintaining application quality. During development tests should be used to ensure that functionality is working as intended.
Run tests while within the virtualenv (or while using Flask)
$ python tests.py
Tests must be written and passing before pushing changes to the master branch.
Certain actions can be performed from your CLI using
Call these actions from inside your virtualenv:
python manage.py action
List all available URL routes in the Flask application. Displays allowed methods and required parameters.
- Bradley Rosenfeld
- Lindsay Robinson
- Austin Mackay
- Michael Free
- Jonathan Welde