Skip to content

Latest commit

 

History

History

datahub-web

DataHub Web

The DataHub web application is written in TypeScript and EmberJs. The application is developed using a modular monorepo architecture, via Yarn Workspaces, that allows us to split the application features into individually installable packages.

DataHub

Folder Layout

The folder structure is organized as below:

datahub-web
├── @datahub # application modules / packages
├── blueprints # EmberJs blueprints for the app
├── configs # configuration sources for building the app
├── node_modules # installed packages dependencies
├── packages # application source directory
└── scripts # helper shell scripts

Prerequisites

Build

Running the build script ./gradlew build from the top-level directory <DOWNLOAD_DIRECTORY>/datahub will build the entire app.

To build the web client (Ember application), you can run the following from the top-level directory

datahub> ./gradlew emberBuild

or

datahub> ./gradlew :datahub-web:build

Building will run the monorepo test suite and transpile the TypeScript application into the datahub-web/dist folder.

Developing & Running the web application

Once DataHub GMS and the DataHub Frontend are running you can start DataHub Web by running:

datahub> ./gradlew emberServe

or

datahub-web> yarn # To install dependencies, if you skipped the build step above
datahub-web> yarn run dev # serve the ember application

This will start the ember application and proxy to your running instance of DataHub Frontend. NOTE: If you are running DataHub Frontend on a port other than 9001, you will need to update the proxy to this port number in the gradle script.

Testing

To run all tests

datahub> ./gradlew emberTest

or

datahub> yarn test

To run test for a specific package / workspace in the DataHub Web monorepo, you can execute

datahub> yarn workspace <WORKSPACE_NAME> test # where WORKSPACE_NAME is a yarn workspace in @datathub/

For example:

datahub> yarn workspace @datahub/data-models test

Contributing

See contributing.md