The Online Backend is implemented in Django (in Python programming language).
Django is used for:
- ORM Mapping, and help manage the database scheme (via migrations)
- Generic (out if the box) features (User management,...)
- Generic administration interface (not intended to final users, but is useful for implementation phase and, in production, trouble shooting)
Django is NOT used to build user interfaces (i.e. the Django Templates are not used).
Instead, a REST interface is built on top of the services/models via Django REST Framework.
The Django REST Framework
- support various formats (JSON, XML,...)
- provides, on top of the actual REST API, a (browsable) documentation.
Under consideration: the implementation of a GraphQL, using Graphene.
Modularity
The various modules/plugins of openIMIS are delivered as interchangeable applications of a global Django project.
The (event-based) communication between the modules / plugins is provided by a openIMIS Online Core component, abstracting the actual implementation (based on either Django signals or an external message broker such as rabbitmq).
Documentation and Tutorials
(official) Django documentation is very complete and is clearly THE privileged source of information.
Some other material of interest:
- Python programming language on edx.org
- Django tutorial on youtube
- Books of interest:
- REST APIs with Django: Build powerful web APIs with Python and Django, by William S. Vincent
To setup a development environment, the use of pip, pipenv and virtualenv is highly recommended, please visit https://docs.python-guide.org/dev/virtualenvs/ for detailed information.