Infrastructure - serratus-bio/open-virome GitHub Wiki
Tech stack
UI
- React 18 is the main web app framework
- Redux Toolkit is used for managing global app state and managing API queries
- Apache Echarts is used for bar, scatter, and histogram plots
- CytoscapeJS is used for network plots
- MapLibre is used for displaying the map component
- Material UI is used for other UI components
API
- NodeJS is used as the base server
- AWS Lambda and API Gateway is used for serving the API.
- AWS Serverless Express is used to support running the API locally as well as compiling and starting the API on AWS Lambda
Deployments
GitHub Actions are used to deploy the UI and API whenever any changes are made to the main
branch in the open-virome repo.
The frontend workflow installs all packages, builds js and html files, and uploads to an S3 CDN bucket. This workflow is only run when changes are made to the /frontend
directory.
The API workflow installs all packages, creates .env file with secrets, builds nodejs server, and deploys to an AWS lambda function. This workflow is only run when changes are made to the /api
directory.
API data sources
Knowledge graph
Neo4j community edition is deployed with an AWS Cloudformation stack. The knowledge graph is generally used for cluster related functionality, i.e. aggregating a local neighbourhood. More details can be found in the virus-knowledge-graph repo. Knowledge graph backups are stored in the serratus-graph bucket
PostgreSQL database
The app uses the Logan PSQL database as the primary datasource for fetching identifiers and results. More details on our query builder can be found in this wiki. The Logan database is an updated version of the Serratus database. PSQL backups are stored in the serratus-aurora-20210406 bucket
CDN: S3 Bucket
Bundled Webapp resources are served from the open-virome-webapp bucket
Pre-computed MWAS results are retrieved from the serratus-mwas bucket