60. System architecture¶
60.1 BIMS Architecture¶
Logo | Name | Notes |
---|---|---|
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 | BIMS is based on Django, which is a high-level python web framework. Django follows the model-template-views architecture pattern. | |
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 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 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 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 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.. | |
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 functionalityStores the core functionalities used in the ensemble of the BIMS application
-
td_biblio
: BibliographyManages the bibliography in BIMS
-
scripts
: BIMS scriptsSeries of commands used to automatically manipulate (manage, remove, clean, or add) data in BIMS
-
bims_theme
: BIMS themeManages the BIMS theme, like the logo, the section in landing page, and the menu.
-
mobile
: API for BIMS mobile applicationStores 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: