Design: Overview¶
This document provides an overview of the software modules of VarFish Server described in the Design section. As mentioned in the chapter Architecture, VarFish Server consists of a Frontend (TypeScript/Vue3) and a Backend (Python/Django) component.
The frontend generally needs a corresponding component in the backend, and the components communicate via REST APIs calls. The backend is implemented with Django Rest Framework (DRF) and an API specification is created as OpenAPI v3 from the DRF views. For the frontend, we generate TypeScript client API libraries from these definitions, ensuring type-safe communication between frontend and backend. In the case that a backend module does not have a corresponding part in the frontend, this is documented appropriately. The following figure shows the mirrored module structure.
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart BT
varfishServer[VarFish Server]:::other
frontend[Frontend]:::frontend
backend[Backend]:::backend
frontendCaseMgmt[Case Mgmt]:::frontend
frontendCaseQc[Case QC]:::frontend
frontendEtc[...]:::frontend
backendCaseMgmt[Case Mgmt]:::backend
backendCaseQc[Case QC]:::backend
backendEtc[...]:::backend
frontend --> varfishServer
frontendCaseMgmt --> frontend
frontendCaseQc --> frontend
frontendEtc --> frontend
backend --> varfishServer
backendCaseMgmt --> backend
backendCaseQc --> backend
backendEtc --> backend
classDef other fill:white
classDef frontend fill:#c5effc
classDef backend fill:#e9c5fc
Schematic overview of the mirrored module structure in VarFish server.¶
In this document, we will describe the corresponding frontend and backend together, and show simplified figures such as the following.
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart BT
varfishServer[VarFish Server]
caseMgmt[Case Mgmt]
caseQc[Case QC]
etc[...]
caseMgmt --> varfishServer
caseQc --> varfishServer
etc --> varfishServer
Simplified module structure.¶