Skip to content

qbank Architecture

cjshawMIT edited this page Jul 7, 2017 · 5 revisions

Introduction

qbank exposes the dlkit library RESTfully, so much of the logic rests in the dlkit library. You may find the dlkit source code useful in understanding where different capabilities lie.

App components

qbank is broken up into several sub-apps, which are in their own sub-folders:

  • Assessment
  • Logging
  • Repository

Assessment

This package includes the code for managing assessment / question authoring, student taking of assessments, and delivering results.

Logging

This package includes the code for managing logs and log entries. It also includes a generic logging endpoint for apps or tools that do not refer to a specific log or assessment bank.

Repository

This package includes the code for creating and managing media assets, their translations, accessibility data (like alt-text and transcript files), and license / copyright. It also provides streaming of media assets.

SSL certificates

Because some of the assessment types supported by qbank require access to the user's microphone, the site must be served over https. When running qbank locally for development, or when bundled for running offline, this means pointing qbank to your SSL certificates. The repository includes some self-signed certificates that you can use / replace, or you can also point the app to your own certs. If you are doing this with a web server like Apache, you can also point Apache to your SSL certs and leave this configuration out of qbank (see the section on running qbank in the cloud for more info).

To change the cert paths, you have to edit main.py and update the values for:

CherryPyWSGIServer.ssl_certificate
CherryPyWSGIServer.ssl_private_key

You'll notice two values for this, one that uses sei._MEIPASS and another that uses ABS_PATH. Both need to be updated. sei._MEIPASS is used when qbank is bundled into a single installable, and ABS_PATH is used for running qbank with the built-in wsgi server via the command line.