Skip to content
This repository has been archived by the owner on Jul 23, 2020. It is now read-only.

IlyaLab/WebAppBase

Repository files navigation

Web App Base

This project provides a Web Application Template to standardize the development of new HTML5 web applications and web services for the Shmulevich Group at the Institute for Systems Biology. It allows our team to reduce development and maintainance time, and supports rapid prototyping.

Operating System Support The example commands in this file are directed at Linux and Mac OS X users. However, it should be expected (unless explicitly noted) that these technologies are supported by the Windows operating system.

Browser Support The web applications developed using this template will adopt the HTML5 standard. Usage will be supported in compliant web browsers. We will work to ensure that this template also supports tablets using HTML5 web browsers. But we will focus our testing efforts for compatible browsers on the most commonly-used platforms: iOS and Android.

Initial Dev Setup

  1. Fork this repository
  2. Complete Installation Guide instructions
  3. Customize README.md and INSTALL.md with specific proxies and configurations (see below)
  4. Complete Web Services setup and Runtime Configuration

Web Services

Developers on forked web applications should configure the Grunt web server using proxy.json to point proxies at production or development Addama instances and/or deploy a local Addama installation.

These web services can be integrated using simple web proxies services. Example query:

This template accesses the following APIs presented by a deployed version of Addama:

    /datastores - GET access to NOSQL databases (i.e. MongoDB)
        HTTP query parameters accepted for filtering (?gene=TP53&gene=KRAS)

    /data - GET access to local data file repositories (e.g. tar.gz, .tsv, .img)
    
    /storage - GET/POST access to NOSQL databases (i.e. MongoDB)
        accepts arbitrary objects at arbitrary URIs

A standard development deployment should access /data and/or /datastores from a production or a development service, whereas /storage should be accessed from a local instance. @todo: provide examples for storage usage

Runtime Configuration

The following files can be configured from /app/configurations/ directory. Developers should also check-in custom configuration files for their web apps.

  • Identifying UI elements (e.g. titles, links in the About menu)
  • Hangout URL

Example configuration

{
    "title":"Example Project",
    "hangoutUrl":"https://plus.google.com/hangouts/_?gid={app-gid}",
    "aboutLinks":[
        {
            "label":"Institute for Systems Biology",
            "url":"http://systemsbiology.org"
        }
    ]
}
  • Specifies data source elements such as files, directories, and data services available to the application
  • Includes information such as labels and data types
  • This configuration file serves as an abstraction layer for the web application. The Data Menu is populated with its entries, and allows for the views to be dynamically integrated with the data. No hardcoding necessary.

Example configuration

{
    "datamodel":{
        "mutations":{
            "label":"Mutations",
            "catalog":{
                "Protein_Mutations_Per_Tumor_Type":{
                    "label":"Protein Mutations Per Tumor Type",
                    "service":"datastores/mutations/protein_mutations_per_tumor",
                    "description":"This dataset was prepared from TCGA MAF files produced by Firehose",
                    "model":"Mutations"
                },
                "mutsig_rankings":{
                    "label":"MutSig Rankings",
                    "service":"datastores/mutations/mutsig_rankings",
                    "description":"This dataset was prepared from TCGA MutSig 2.0 data produced by Firehose"
                },
                "mutsig_top20":{
                    "label":"MutSig Top20",
                    "service":"data/firehose/.../mutsig_top20.tsv"
                }
            }
        }
    }
}

Data Model View Mappings

Model Description Views
FeatureMatrix todo: fill this table Grid, StacksVis

@todo: further documentation of data model and views