Contributor
Sunny Tarawade

New FAANG backend with Elasticsearch and GraphQL


Mentors
Alexey Sokolov
Organization
Genome Assembly and Annotation
Technologies
python, django, docker, kubernetes, elasticsearch, graphql, angular
Topics
web
Current limitations: The current Back End for the Functional Annotation of Animal Genomes project (FAANG) provides users with a public rest API to access data. But it has a few limitations. First, in order to fetch data from different Elasticsearch indices or to fetch details of different documents, user has to make multiple API request calls. Second, users have to write CURL queries to work with the API which users may find complicated. Proposed solution: The main aim of creating a new backend for the Functional Annotation of Animal Genomes project (FAANG) is to make accessing and handling required data for users much easier than the current setup. In order to achieve this the following are the main tasks for the project: First, creating a Back End for Fetching Data (BE Read): To create a GraphQL Server which will make it easy to fetch the required data using advanced operations like join and aggregations by making a single API call to the Back End. Second, creating a Front End for Fetching Data (FE Read): To create a UI for selecting which data is to be fetched. Hence using a GraphQL Server, user only needs to make a single API call, and with a better UI, user wont have to worry about writing queries for fetching data. Deliverables : 1. Basic Fetching of documents (single and multiple documents of an elasticsearch index) 2. Implementing Dataloader in the GraphQL server for decreasing DB hits 3. Implementing Filter and Join functionality between elasticsearch indices for fetching data from the GraphQL server 4. Implementing Aggregation for data to be fetched from the GraphQL server 5. Implementing Frontend interfaces to make data fetching easier and reduce mistakes from the user's side