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.
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
- Also see Frontend
- Other dependencies are installed as part of the build step
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.
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.
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