{"id":40520867,"url":"https://github.com/dockstore/dockstore-ui2","last_synced_at":"2026-01-20T21:05:54.226Z","repository":{"id":37251563,"uuid":"85749030","full_name":"dockstore/dockstore-ui2","owner":"dockstore","description":"Website user interface for Dockstore in Angular2","archived":false,"fork":false,"pushed_at":"2026-01-19T06:04:41.000Z","size":46296,"stargazers_count":17,"open_issues_count":9,"forks_count":16,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2026-01-19T14:17:40.564Z","etag":null,"topics":["angular","cwl","dockstore","hacktoberfest","nextflow","wdl"],"latest_commit_sha":null,"homepage":"https://dockstore.org","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dockstore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-03-21T20:17:13.000Z","updated_at":"2026-01-19T06:04:44.000Z","dependencies_parsed_at":"2023-09-27T22:00:54.673Z","dependency_job_id":"cab97fc0-6673-48bd-98ea-4935843e0a26","html_url":"https://github.com/dockstore/dockstore-ui2","commit_stats":null,"previous_names":[],"tags_count":171,"template":false,"template_full_name":null,"purl":"pkg:github/dockstore/dockstore-ui2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dockstore%2Fdockstore-ui2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dockstore%2Fdockstore-ui2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dockstore%2Fdockstore-ui2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dockstore%2Fdockstore-ui2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dockstore","download_url":"https://codeload.github.com/dockstore/dockstore-ui2/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dockstore%2Fdockstore-ui2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28613696,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T18:56:40.769Z","status":"ssl_error","status_checked_at":"2026-01-20T18:54:26.653Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","cwl","dockstore","hacktoberfest","nextflow","wdl"],"created_at":"2026-01-20T21:05:53.660Z","updated_at":"2026-01-20T21:05:54.220Z","avatar_url":"https://github.com/dockstore.png","language":"TypeScript","readme":"[![Codacy Badge](https://app.codacy.com/project/badge/Grade/37aa92c1fff9407fb47b426d1be1f7f0)](https://www.codacy.com/gh/dockstore/dockstore-ui2/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=dockstore/dockstore-ui2\u0026amp;utm_campaign=Badge_Grade)\n[![CircleCI](https://circleci.com/gh/dockstore/dockstore-ui2/tree/develop.svg?style=svg)](https://circleci.com/gh/dockstore/dockstore-ui2/tree/develop)\n[![codecov](https://codecov.io/gh/dockstore/dockstore-ui2/branch/develop/graph/badge.svg)](https://codecov.io/gh/dockstore/dockstore-ui2)\n\nPlease file issues for this repository and Web site at [the dockstore/dockstore repository](https://github.com/dockstore/dockstore/issues)!\n\nTable of Contents\n=================\n\n   * [DockstoreUi2](#dockstoreui2)\n      * [Set Up Angular CLI](#set-up-angular-cli)\n         * [Prerequisites](#prerequisites)\n            * [NPM](#npm)\n      * [Project Set Up](#project-set-up)\n      * [Development server](#development-server)\n      * [Code scaffolding](#code-scaffolding)\n      * [Build](#build)\n      * [Running unit tests](#running-unit-tests)\n      * [Running end-to-end tests](#running-end-to-end-tests)\n      * [Further help](#further-help)\n\n\n# Dockstore UI2\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.0-rc.4.\n\n## Set Up Angular CLI\n\n### Prerequisites\n\n- Java 21+\n- Node and its included NPM (see [.nvmrc](.nvmrc) for the correct version of node to install)\n- wget \n\nInstall NPM and Node using nvm:\n```\nwget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash\n```\nClose current terminal and open a new one or `source ~/.bashrc`\n```\nnvm install $(cat .nvmrc)\n```\nOptionally, install a global Angular CLI in order to execute `ng` commands without prepending `npx`.   \nOtherwise, prepend `npx` to every command in this README if a global @angular/cli was not installed.\nBefore installing, follow https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-two-change-npms-default-directory to fix permissions if needed.\n\n```\n$npm i -g @angular/cli@14.2.8\t\t\n```\n\n#### NPM\n\nAfter cloning the repo from GitHub, you can install the npm packages.\n```\ngit clone https://github.com/dockstore/dockstore-ui2.git\ncd dockstore-ui2\ngit checkout develop\ngit pull\n\nnpm ci\n```\n`npm ci` will install all npm dependencies including Prettier and the Husky Git hook. \nEnsure `CI=true` is not set when using `npm ci` or else the Git hook will not work.\nPrettier + Husky will automatically format changed files before each commit:\n```\n$ git commit -m \"Test\"\nghusky \u003e pre-commit (node v10.13.0)\n  ↓ Stashing changes... [skipped]\n    → No partially staged files found...\n  ✔ Running linters...\n[feature/2130/prettier b6da3e7c] Test\n```\n\n\nCheck to make sure Angular CLI has been properly set up\n```\n ng v\n\n     _                      _                 ____ _     ___\n    / \\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|\n   / △ \\ | '_ \\ / _` | | | | |/ _` | '__|   | |   | |    | |\n  / ___ \\| | | | (_| | |_| | | (_| | |      | |___| |___ | |\n /_/   \\_\\_| |_|\\__, |\\__,_|_|\\__,_|_|       \\____|_____|___|\n                |___/\n    \n\nAngular CLI: 14.2.7\nNode: 16.18.1\nPackage Manager: npm 8.19.2 \nOS: darwin arm64\n\nAngular: 14.2.8\n... animations, common, compiler, compiler-cli, core, forms\n... language-service, platform-browser, platform-browser-dynamic\n... router\n\nPackage                         Version\n---------------------------------------------------------\n@angular-devkit/architect       0.1402.7\n@angular-devkit/build-angular   14.2.7\n@angular-devkit/core            14.2.7\n@angular-devkit/schematics      14.2.7\n@angular/cdk                    14.2.6\n@angular/cli                    14.2.7\n@angular/flex-layout            14.0.0-beta.41\n@angular/material               14.2.6\n@schematics/angular             14.2.7\nrxjs                            6.6.7\ntypescript                      4.8.4\n```\n\nIf you wish to serve the dist folder in a VM, make sure you have nginx and security rules set up properly.\n[Nginx](https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04)\n\n## Project Set Up\n\nThe Dockstore class in [src/app/shared/dockstore.model.ts](src/app/shared/dockstore.model.ts) is for integrating supported services.\n\nIn `dockstore-webservice`, the `dockstore.yml` being served \u003cb\u003emust be edited to include the client IDs\u003c/b\u003e.\n\n## Development server\n\nRun `npm run start -- --host=\u003chost\u003e` for a dev server. Navigate to `http://\u003chost\u003e:4200/`. The app will automatically reload if you change any of the source files. \n\n## Updating dependencies\n\nRun `npm update`. This will automatically update package.json and package-lock.json.\n\nWhen you update a dependency in the package.json, make sure to update the third party licenses file `THIRD-PARTY-LICENSES.csv`. \nTo update this file, run `npm run license`. Unfortunately, there is not a way to permanently say a certain dependency should be x license using this package. \nSo, once we manually update a dependency's license info and we continue to use it, running the above command will always result in it being unknown in the \nupdated file. **Be sure to review the updated file (i.e. revert changes as needed and update any new unknown or unlicensed dependencies).**\n\nFor more documentation on license-checker, visit [here](https://github.com/davglass/license-checker)\n\n## Code scaffolding\n\nRun `ng g component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.  See https://github.com/datorama/akita-schematics#create-a-new-feature for how to generate Akita-related components.\n\n## Build\n\nWhen building against artifactory, the build should use the latest SNAPSHOT. Set `use_snapshot` to `true` and set `webservice_version_prefix` to the desired SNAPSHOT prefix version. The `webservice_prefix_version` will be prefixed to `-SNAPSHOT` during the build. For example, if you want to use the `1.17.0-SNAPSHOT` artifacts on artifactory, set `webservice_version_prefix` to `1.17.0`. \n\nIn this scenario, the package.json will look like the following:\n```\n \"config\": {\n    \"webservice_version_prefix\": \"1.17.0\",\n    \"webservice_version\": \"1.17.0-alpha.10\",\n    \"use_snapshot\": true\n }\n```\n\nTo build against a specific branch, edit the `webservice_version_prefix` like the following, where slashes in the branch name are replaced with hyphens:\n```\n  \"config\": {\n    \"webservice_version_prefix\": \"1.17.0-\u003cbranch-name-where-slashes-are-subbed-with-hyphens\u003e\",\n    \"webservice_version\": \"1.17.0\",\n    \"use_snapshot\": true\n  },\n```\n\nTo build against a release version on artifactory, set `use_snapshot` to `false` and set the `webservice_version` to your desired version.\n```\n  \"config\": {\n    \"webservice_version_prefix\": \"1.17.0\",\n    \"webservice_version\": \"1.17.0\",\n    \"use_snapshot\": false\n  },\n```\n\nYou can optionally override these config values on the CLI using `npm pkg set config.\u003cconfig-key\u003e=\u003cconfig-value\u003e`. For example, to override `webservice_version`, you would run `npm pkg set config.webservice_version=${WEBSERVICE_VERSION}`.\n\nRun `npm run build` to build the project. The build artifacts will be stored in the `dist/` directory. \n\n### Angular Production Build\n\nFor an Angular Production Build, you will need to install Nginx. \nReplace your nginx.conf file (location depends on your installation) with this template, filling in the two paths: \n```\nevents {\n}\nhttp {\n  include       /usr/local/etc/nginx/mime.types;\n  server {\n    listen 4200;\n      location = /swagger.json {\n        proxy_pass  http://localhost:8080/swagger.json;\n      }\n    location /api/ {\n          rewrite ^ $request_uri;\n          rewrite ^/api/(.*) $1 break;\n          return 400;\n          proxy_pass     http://localhost:8080/$uri;\n    }\n    location / {\n        root  /\u003cpath to\u003e/dockstore-ui2/dist; # FILL IN\n        index  index.html index.htm;\n        try_files $uri $uri/ /index.html =404;\n    }\n  }\n  server {\n    listen 5200;\n    location / {\n        root  /\u003cpath to\u003e/dockstore-ui2/dist; # FILL IN\n        index  index.html index.htm;\n        try_files $uri $uri/ /index.html =404;\n        if ($request_method = 'OPTIONS') {\n            add_header 'Access-Control-Allow-Origin' '*';\n            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';\n            #\n            # Custom headers and headers various browsers *should* be OK with but aren't\n            #\n            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';\n            #\n            # Tell client that this pre-flight info is valid for 20 days\n            #\n            add_header 'Access-Control-Max-Age' 1728000;\n            add_header 'Content-Type' 'text/plain; charset=utf-8';\n            add_header 'Content-Length' 0;\n            return 204;\n         }\n         if ($request_method = 'POST') {\n            add_header 'Access-Control-Allow-Origin' '*';\n            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';\n            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';\n            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';\n         }\n         if ($request_method = 'GET') {\n            add_header 'Access-Control-Allow-Origin' '*';\n            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';\n            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';\n            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';\n         }\n      }\n    }\n}\n```\nUse `npm run build.prod` for an Angular Production Build and start it with `nginx`. localhost:4200 should be available immediately.\n\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nCypress is no longer specified in the package.json, check the `.circleci/config.yml` for the version and how to install it.\n\nRun `npx cypress open` or `npx cypress run` to execute the end-to-end tests via Cypress.io.\nBefore running the tests make sure you:\n- have a postgresql database\n- serve the app via `ng serve` or similar.\n- have the Dockstore webservice jar in the root directory and run it (see scripts/run-webservice-script.sh for guideline)\n\n### Running smoke tests\nSmoke tests are part of the end-to-end testing suite and are located under `cypress/integration/smokeTests/`. The smoke tests\ncan be executed alongside other integration tests when running `npx cypress open` or `npx cypress run`.\n\nVarious sets of smoke tests are runnable from scripts in `package.json`. To run smoke tests against your local service,\nrun `npm run test-local-no-auth`. Before running the tests make sure you have Dockstore set up locally, as described in the above section.\n\n`npm run test-local-no-auth` is also executed in CircleCI when a branch is pushed, or a pull request is made. When run on CircleCI,\nthe smoke tests leverage a dummy database stored in `test/smoke_test_db.sql`. If a smoke test fails on CircleCI, there are two main scenarios\nto consider:\n1. The smoke tests are failing due to a change in the UI. This can be fixed by modifying the tests in `cypress/integration/smokeTests/`.\n2. The dummy smoke test database does not have the proper data for the tested version of the UI. This can be fixed by modifying the data in `test/smoke_test_db.sql`.\n\n#### Modifying the smoke test database\n*Note: Do not link any real accounts in the smoke test database as that will add tokens to the database dump, which is publicly visible. \nThis means you cannot register an account in the normal fashion, as that will add either a GitHub or Google token to the database.* \n\nTo modify the smoke test database, `test/smoke_test_db.sql`:\n1. Load `test/smoke_test_db.sql` into your postgres database.\n2. Run Dockstore locally.\n3. Login to one of the test users already in the database by setting the browser `ng2-ui-auth_token` \nto `fake-admin-token`, `fake-curator-token` or `fake-basic-1-token`. Then, refresh the page. (To locate `ng2-ui-auth_token` in chrome, \ngo to developer tools -\u003e application -\u003e storage (on the left snackbar) -\u003e local storage -\u003e http://localhost:4200)\n4. Make any desired changes to the database, preferably via the UI. It's not recommended to manually change the smoke test database with SQL commands, \nas this can cause constraint issues, but in some cases it is required.\n5. Create a new database dump for the content in postgres, for example if postgres is running in a Docker container, execute: \n`docker exec -t postgres1 pg_dump -U postgres --column-inserts webservice_test \u003e smoke_test_db.sql`\n6. Verify the database dump doesn't have any live tokens in the tokens table \n(Search for `Data for Name: token; Type: TABLE DATA; Schema: public; Owner: dockstore`), then commit the new database dump.\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdockstore%2Fdockstore-ui2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdockstore%2Fdockstore-ui2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdockstore%2Fdockstore-ui2/lists"}