Design and Components
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
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.