Architecture

Runtime Ontology : What ‘things’ comprise RapidSMS?

Application (‘App’)

An application performs one or more of the following functions:

  • Processes messages from the Router
  • Extends sthe data-model
  • Present UI within the WebUI

Examples:

  • Bednets: Bednet distribution supply management (message processing, model extension, UI)
  • Rerporters and Groups (model extension, UI)

Note: If your code does not perform any of the above tasks it’s probably a Library not an App.

Library

A set of code, probably in the form of a Python Module (containing Class and/or Module functions) to perform any helper, utility, or domain specific functionality that can be usefully shared.

Examples of things that would make good libraries:

  • Message parsers (Keyworder, Form processor etc…)

Backends

Backends receive messages from external sources. And delivers messages from RapidSMS to external sources.

External sources include:

  • GSM Handset or Modem (via Spomc backend)
  • HTTP clients: via HTTP backed

Router

Core code that distributes messages from Backends to Apps and which delivers messages from Apps to Backends.

WebUI

A Django application that presents a unified web UI for all the installed and active Apps that have UI components.

Currently WebUI presents a ‘dashboard’ overview and tabs for each App with a UI.