Design and Components

Infrastructure diagram

Thunor Web Infrastructure Diagram Image: Thunor Web software infrastructure. Users access Thunor Web through a web browser. Thunor Core produces plots using the plotly library, which can be delivered through Thunor Web. On the server, Thunor Web runs in multiple Docker containers: nginx web server, PostgreSQL database, and application server. The application server runs uWSGI and Django, a Python web application framework, which interfaces with Thunor Core. Encryption certificates are generated using Certbot in a separate container, run on demand. Static files (CSS, Javascript etc.) are compiled into bundles using Webpack to improve server performance. Error reporting and aggregation use the Sentry platform. The server system is "orchestrated" using Docker Compose.

List of software components

The following is an alphabetical list of software components used in Thunor Core and Thunor Web.

Component Role
Bootstrap Front end layout
Certbot TLS certificate provisioning
Datatables Interactive web tables
Django Web application framework
Docker Application containers
Docker Compose Multi-container orchestration
Docker Machine Remote control and deployment
jQuery Front end interactivity
Nginx Web server
Numpy Numerical operations
Pandas Data manipulation
Plotly Plot rendering, interactivity
PostgreSQL Relational database
Redis Cache
Scipy Curve fitting, statistics
Sphinx Code documentation
Sentry Error aggregation, logging
uWSGI Application server
Webpack Static file bundling

Database Entity Relationship Diagram

Thunor Web Database Entity Relationship Diagram Image: Entity relationship diagram for Thunor Web's relational database. Each box shows a database table with its fields. Foreign key relationships are denoted by lines terminated with circles, inheritance is denoted by arrows.