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.