60. Skip to content

60. System architecture

60.1 BIMS Architecture

Architecture

Logo Name Notes
GeoServer GeoServer An open-source server written in Java that allows users to share, process and edit geospatial data. GeoServer implements industry-standard OGC protocols such as Web Feature Service (WFS), Web Map Service (WMS), and Web Coverage Service (WCS). Additional formats and publication options are available as extensions, including Web Processing Service (WPS) and Web Map Tile Services (WMTS).
Django Django BIMS is based on Django, which is a high-level python web framework. Django follows the model-template-views architecture pattern.
Celery Celery Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages, while providing operations with the tools required to maintain such a system. It’s a task queue with focus on real-time processing, while also supporting task scheduling. BIMS uses Celery for handling background tasks.
PostgreSQL PostgreSQL PostgreSQL is a powerful, open source object-relational database system with over 35 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance. PostgreSQL helps to make up the database that stores and manages both the spatial data and information for BIMS.
PostGIS PostGIS PostGIS extends the capabilities of the PostgreSQL relational database by adding support storing, indexing and querying geographic data. PostGIS helps to make up the database that stores and manages both the spatial data and information for BIMS.
OpenLayers OpenLayers OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles, vector data and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD). It is used for map interactions and geospatial operations in BIMS.
Backbone.js Backbone.js Backbone.js is a JavaScript rich-client web app framework based on the model–view–controller design paradigm. BIMS uses it to provide specific front-end functionality..
CSS Cascading Style Sheets CSS is a style sheet language used for describing the presentation of the page HTML in BIMS.

60.2 Software Architecture Overview

60.2.1 Python/Django

BIMS is written with Django. It includes few apps to build the user interfaces. Several Python libraries are used in BIMS to realize its specific functionality.

60.2.1.1 BIMS Apps

  • bims: BIMS core functionality

    Stores the core functionalities used in the ensemble of the BIMS application

  • td_biblio: Bibliography

    Manages the bibliography in BIMS

  • scripts: BIMS scripts

    Series of commands used to automatically manipulate (manage, remove, clean, or add) data in BIMS

  • bims_theme: BIMS theme

    Manages the BIMS theme, like the logo, the section in landing page, and the menu.

  • mobile: API for BIMS mobile application

    Stores the functionalities used in the BIMS mobile application

60.2.1.2 BIMS Modules

  • Taxonomy
  • SASS
  • Physico-chemistry
  • Water Temperature

60.2.1.3 Libraries

There are multiple Python libraries used in BIMS, like:

  • Django REST framework

    BIMS provides Web APIs by using the django rest framework

    bims.api_views

    bims.api_urls.py

  • Celery

    BIMS uses celery for handling background tasks.

    bims.tasks

60.2.2 JavaScript

BIMS uses several JavaScript libraries to provide specific functionality in the front-end. They are found at bims/static/js/libs

  • Backbone.js: used in the map filters
  • Highcharts: used for the charts
  • OpenLayers: used for the web mapping

60.2.3 Settings

The Django settings for BIMS can be found in core.settings

60.2.4 Docker/docker-compose

60.2.5 Testing Framework

bims/tests: Tests are used to test separate units of the written code and to determine if the code works as expected.

BIMS uses factory_boy library for test framework.

60.3 Data Model

A model is the single, definitive source of information about your data. It contains the essential fields and behaviors of the data that you’re storing. Generally, each model maps to a single database table.

As a platform for managing and visualizing biodiversity data, the following models are often used in BIMS:

60.3.1 bims.models.biological_collection_record

60.3.2 bims.models.taxonomy

60.3.3 bims.models.location_site