diff --git a/README.md b/README.md index 1252cd04..8dcac4b8 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ De tech-stack bestaat uit: - **Frontend**: TypeScript + Vue.js + Vuetify - **Backend**: TypeScript + Node.js + Express.js + TypeORM + PostgreSQL +- **Identity provider**: Keycloak Voor meer informatie over de keuze van deze tech-stack, zie [designkeuzes](https://github.com/SELab-2/Dwengo-1/wiki/Developer:-Design-keuzes). diff --git a/assets/img/keycloak.png b/assets/img/keycloak.png new file mode 100644 index 00000000..6a79a7a2 Binary files /dev/null and b/assets/img/keycloak.png differ diff --git a/docs/architecture/schema.png b/docs/architecture/schema.png index 616d896c..9e4b00ce 100644 Binary files a/docs/architecture/schema.png and b/docs/architecture/schema.png differ diff --git a/docs/architecture/schema.py b/docs/architecture/schema.py index 87a59f9a..7aa4cefd 100644 --- a/docs/architecture/schema.py +++ b/docs/architecture/schema.py @@ -1,30 +1,49 @@ -from diagrams import Cluster, Diagram +from diagrams import Cluster, Diagram, Edge from diagrams.custom import Custom from diagrams.onprem.certificates import LetsEncrypt -from diagrams.onprem.container import Docker from diagrams.onprem.database import PostgreSQL from diagrams.onprem.logging import Loki from diagrams.onprem.monitoring import Grafana from diagrams.onprem.network import Nginx +from diagrams.programming.flowchart import InputOutput from diagrams.programming.framework import Vue from diagrams.programming.language import Nodejs -from diagrams.programming.flowchart import InputOutput with Diagram("Dwengo-1 architectuur", filename="docs/architecture/schema", show=False): - reverse_proxy = Nginx("reverse proxy") - reverse_proxy >> LetsEncrypt("SSL") + ingress = Nginx("Reverse Proxy") + certificates = LetsEncrypt("SSL") - with Cluster("Docker"): - Docker() - - frontend = Vue("/") - backend = Nodejs("/api") - reverse_proxy >> frontend - frontend >> backend >> InputOutput("MikroORM") >> PostgreSQL() - - backend >> Loki("logging") >> Grafana("monitoring") - - with Cluster("Dwengo"): + with Cluster("Dwengo VZW"): dwengo = Custom("Dwengo", "../../assets/img/dwengo-groen-zwart.png") - backend >> dwengo + with Cluster("Dwengo-1"): + frontend = Vue("/") + backend = Nodejs("/api") + identity_provider = Custom("IDP", "../../assets/img/keycloak.png") + + database = PostgreSQL("Database") + orm = InputOutput("MikroORM") + orm >> Edge(label="map") << database + + with Cluster("Observability"): + logging = Loki("Logging") + logging << Edge(color="firebrick", style="dashed") << Grafana("Monitoring") + + dependencies = [ + dwengo, + logging, + orm + ] + + backend >> dependencies + + service = [ + frontend, + backend, + identity_provider, + certificates + ] + + ingress \ + >> Edge(color="darkgreen") \ + << service