Create a web application that allows a user to search for genomic variants by gene name and display the results in a tabular view.
- clone repository
- run npm install (node 10+), I have a local docker image I will deploy later
- run node index.js -e development
$ cd /path/to/working-dir
$ git clone git@github.com:yawetse/variant-search.git
$ npm install
$ node index.js -e developmentThe endpoints require Basic Auth (for Postman/CURL base64 encode client_id:client_secret) in browser use the client_id as the username and client_secret as the password
-
Allow the user to enter a gene name to search for variants in that gene. Display the results in a table that shows various attributes associated with each genomic variant.
-
Provide an auto-suggest feature for entering the gene name.
- go to http://localhost:8786
-
Provide two RESTful endpoints supporting the functionality listed in steps 1 and 2.
- Auto Suggest RESTful endpoint:
http://localhost:8786/basic_api/v1/search/genes/{SEARCHTERM}?format=json - Gene Variants RESTful endpoint:
http://localhost:8786/basic_api/v1/genes/{GENE}?format=json
- Auto Suggest RESTful endpoint:
- See: https://github.com/yawetse/variant-search/tree/master/content/container/periodicjs.container.default
- Built using Periodicjs (https://github.com/repetere/periodicjs) - My node equvalent of Django there are modules for OAuth servers and authentication, Caching, Multi-factor authentication, RESTful APIs and etc.
- Used Extensions:
- OAuth 2 Server - provide an OAuth endpoint for external integrations
- Passport, Passport MFA, Basic Auth, and User Access Control - User authentication, access controls, and 2FA/MFA
- Restful API - configurable restful API endpoints and authentication
- Used Extensions:
- Modelscript (https://repetere.github.io/modelscript/) - Data wrangling framework similar to numpy/pandas. Used for TSV -> sqlite
- See:
- Built with JSONX - https://github.com/repetere/jsonx - React JSON Syntax - Construct React elements, JSX and HTML with JSON without transpilers.
- Build basic Server Side React rendering
- Purposely not using Redux in favor of useGlobalState hook.




