40. Skip to content

40. System Architecture

In this section, we outline the system architecture using ER Diagrams, Software Component Diagrams etc. and key libraries / frameworks used in this project.

40.1 Software Components Used

The following is a list, with brief descriptions, of the key components used in creating this platform. Please refer to their individual documentation for in-depth technical information.

Logo Name Notes
Django Django makes it easier to build better web apps more quickly and with less code.
File:React-icon.svg - Wikimedia Commons ReactJS React lets you build user interfaces out of individual pieces called components. Create your own React components like Thumbnail, LikeButton, and Video. Then combine them into entire screens, pages, and apps.
MUI Move faster with intuitive React UI tools. MUI offers a comprehensive suite of free UI tools to help you ship new features faster. Start with Material UI, our fully-loaded component library, or bring your own design system to our production-ready components.
Docker Accelerate how you build, share, and run applications. Docker helps developers build, share, and run applications anywhere — without tedious environment configuration or management.
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.
Celery Beat This extension enables you to store the periodic task schedule in your database. The periodic tasks can be managed from the Django Admin interface, where you can create, edit and delete periodic tasks and how often they should run.
Django Rest Framework Django REST framework is a powerful and flexible toolkit for building Web APIs.
MapLibre Open-source mapping libraries for web and mobile app developers.
deck.gl is a WebGL-powered framework for visual exploratory data analysis of large datasets.
PostGIS PostGIS extends the capabilities of the PostgreSQL relational database by adding support storing, indexing and querying geographic data.
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.
Tegola An open source vector tile server written in Go, Tegola takes geospatial data and slices it into vector tiles that can be efficiently delivered to any client.
GDAL GDAL is a translator library for raster and vector geospatial data formats that is released under an MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing.

40.2 Docker Components

The following diagram represents the docker containers, ports and volumes that are used to compose this platform.

The docker volumes are used for the following purposes, with the following typical storage allocations:

NAME CAPACITY ACCESS MODES NOTES
media-data 10Gi RWX azurefile Used for the uploaded files, example for XLS of file of importer. Azurefile and size is sufficient, mostly these files are not big.
redis-data 10Gi RWX azurefile Used by redis for database backup (to make queue persistence when redis rerun).
static-data 10Gi RWX azurefile Used for the static files.

40.3 ER Diagram

The following diagram represents all of the databsse entities that are created by the Django ORM (Object Relational Mapper). Right click the image and open it in its own tab to see it at full resolution.

🪧 If you already have all of the above criteria met, you can move on to Prerequisites to start the process of getting your local development environment set up.