You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-7Lines changed: 11 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,10 +34,10 @@ flowchart LR
34
34
subgraph d [Data tier]
35
35
db["Database<br>_(Postgres)_"]
36
36
end
37
-
subgraph a ["Application tier<br>_(Django application)_"]
37
+
subgraph a ["Application tier<br>_(Gunicorn server)_"]
38
38
a_whitespace:::hidden
39
39
admin[Admin interface]
40
-
API
40
+
API["API<br>_(Django application)_"]
41
41
static_build[Static files]
42
42
end
43
43
subgraph p ["Presentation tier<br>_(Nginx server)_"]
@@ -53,9 +53,9 @@ flowchart LR
53
53
Browser-.->api_proxy
54
54
Browser-.->static
55
55
56
-
admin_proxy-->admin
57
-
api_proxy-->API
58
-
static -.- static_build
56
+
admin_proxy--proxy_pass-->admin
57
+
api_proxy--proxy_pass-->API
58
+
static -.docker build.- static_build
59
59
60
60
admin-->db
61
61
API-->db
@@ -73,21 +73,25 @@ The end-user facing user interface (UI) of the application is implemented as Sve
73
73
74
74
The HTML, JavaScript, and CSS files that implement the user UI are delivered to the end-users browser by an static file server. This application uses [nginx](https://nginx.org/) which, in addition to hosting the static files, acts as a reverse proxy towards the application layer: when the user interacts with the application, the browser contacts the presentation tier which then proxies the requests to application tier. <!-- TODO: add note on preventing direct access to the application server -->
75
75
76
+
<!-- TODO: static (Svelte app) vs dynamic (admin panel) web pages -->
77
+
76
78
### Application tier
77
79
78
80
<!-- TODO: Intro to application tier -->
79
81
80
82
The application tier of the application is implemented with Django in [back-end](./back-end) directory. [Django](https://www.djangoproject.com/) is a Python web framework that could be used to implement both presentation and the application tiers as well as managing the data tier. In this project it implements the application programming interface (API), handles interaction with the database, and provides an administrator panel for managing the data stored in the database.
81
83
82
-
<!-- TODO: more detailed description of the server and how it is executed and connected to UI and DB -->
84
+
The Django application is exposed using a [Gunicorn](https://gunicorn.org/) server that handles incoming connections using multiple worker threads. I.e., Gunicorn implements a production ready webserver where as the Django application is responsible for implementing the application logic behind the server. Gunicorn server communicates with the Django application using WSGI, a standardized interface for connecting web servers to applications.
85
+
86
+
<!-- TODO: more detailed description of the DB connection -->
83
87
84
88
### Data tier
85
89
86
90
<!-- TODO: Intro to data tier -->
87
91
88
92
The data tier of the application is provided by Postgres SQL database.
89
93
90
-
<!-- TODO: move relevant parts from here to sections above
94
+
<!-- TODO: move relevant parts from here to sections above and/or to README.md files in back-end and front-end directories.
91
95
92
96
This section describes step-by-step how this application was created. To be able to follow these step-by-step instructions, you will need:
0 commit comments