{"id":24641150,"url":"https://github.com/elixir-cloud-aai/prowes","last_synced_at":"2025-05-12T14:59:03.120Z","repository":{"id":36988131,"uuid":"222950519","full_name":"elixir-cloud-aai/proWES","owner":"elixir-cloud-aai","description":"Proxy service for injecting middleware into GA4GH WES requests","archived":false,"fork":false,"pushed_at":"2025-01-09T00:19:02.000Z","size":476,"stargazers_count":3,"open_issues_count":29,"forks_count":5,"subscribers_count":28,"default_branch":"dev","last_synced_at":"2025-03-31T23:35:58.128Z","etag":null,"topics":["api-gateway","ga4gh","ga4gh-wes","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"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/elixir-cloud-aai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2019-11-20T14:02:10.000Z","updated_at":"2025-01-09T00:19:04.000Z","dependencies_parsed_at":"2023-11-12T13:29:24.445Z","dependency_job_id":"37bfe0ce-1f71-4a90-af45-782fd7f18f8a","html_url":"https://github.com/elixir-cloud-aai/proWES","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FproWES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FproWES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FproWES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2FproWES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elixir-cloud-aai","download_url":"https://codeload.github.com/elixir-cloud-aai/proWES/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253761013,"owners_count":21960052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api-gateway","ga4gh","ga4gh-wes","hacktoberfest"],"created_at":"2025-01-25T12:12:27.566Z","updated_at":"2025-05-12T14:59:03.094Z","avatar_url":"https://github.com/elixir-cloud-aai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# proWES\n\n[![license][badge-license]][badge-url-license]\n[![chat][badge-chat]][badge-url-chat]\n[![ci][badge-ci]][badge-url-ci]\n\n## Synopsis\n\nproWES is a robust and scalable [Global Alliance for Genomics and Health\n(GA4GH)][res-ga4gh] [Workflow Execution Service (WES) API][res-ga4gh-wes] gateway\nthat may play a pivotal role in augmenting the capabilities of your GA4GH Cloud\necosystem by offering flexible middleware injection for effective workflow\ndeployment across a range of federated workflow management system deployments.\n\n## Description\n\nproWES gateway may serve as a crucial component in federated compute networks\nbased on the GA4GH Cloud ecosystem. Its primary purpose is to provide\ncentralized features to a federated network of independently operated GA4GH WES\ninstances. As such, it can serve, for example, as a compatibility layer, a load\nbalancer workload distribution layer, a public entry point to an enclave of\nindependent compute nodes, or a means of collecting telemetry.\n\nWhen WES requests are received, proWES applies one or more configurable\nmiddlewares before forwarding the requests to appropriate WES instances in\nthe network. A plugin system makes it easy to write and inject middlewares\ntailored to specific requirements, such as for access control, request/response\nprocessing or validation, or the selection of suitable endpoints considering\ndata use restrictions and client preferences.\n\n### Built-in middleware plugins\n\nTBA\n\n### Implementation notes\n\nproWES is a [Flask][res-flask] microservice that supports\n[OAuth2][res-oauth2]-based authorization out of the box (bearer authentication)\nand stores information about incoming and outgoing tasks in a NoSQL database\n([MongoDB][res-mongodb]). Based on our [FOCA][res-foca] microservice archetype,\nit is highly configurable in a declarative (YAML-based!) manner. Forwarded tasks\nare tracked asynchronously via a [RabbitMQ][res-rabbitmq] broker and\n[Celery][res-celery] workers that can be easily scaled up. Both a\n[Helm][res-helm] chart and a [Docker Compose][res-docker-compose] configuration\nare provided for easy deployment in native cloud-based production and\ndevelopment environments, respectively.\n\n![proWES-overview][image-prowes-overview]\n\n## Installation\n\nFor production-grade [Kubernetes][res-kubernetes]-based deployment, see\n[separate instructions][docs-deploy]. For testing/development purposes, you can\nuse the instructions described below.\n\n### Requirements\n\nEnsure you have the following software installed:\n\n* [Docker][res-docker]\n* [docker-compose][res-docker-compose]\n* [Git][res-git]\n\n### Prerequisites\n\nCreate data directory and required subdirectories\n\n```bash\nexport PROWES_DATA_DIR=/path/to/data/directory\nmkdir -p $PROWES_DATA_DIR/{db,specs}\n```\n\n\u003e **Note:** If the `PROWES_DATA_DIR` environment variable is not set, proWES\n\u003e will require the following default directories to be available:\n\u003e\n\u003e * `../data/pro_wes/db`\n\u003e * `../data/pro_wes/specs`\n\nClone repository\n\n```bash\ngit clone https://github.com/elixir-europe/proWES.git\n```\n\nTraverse to app directory\n\n```bash\ncd proWES\n```\n\n### Configure (optional)\n\nThe following user-configurable files are available:\n\n* [app configuration](pro_wes/config/app_config.yaml)\n* [deployment configuration](docker-compose.yaml)\n\n### Deploy\n\nBuild/pull and run services\n\n```bash\ndocker-compose up -d --build\n```\n\nVisit Swagger UI\n\n```bash\nfirefox http://localhost:8090/ga4gh/wes/v1/ui\n```\n\n\u003e **Note:** Host and port may differ if you have changed the configuration or\n\u003e use an HTTP server to reroute calls to a different host.\n\n## Contributing\n\nThis project is a community effort and lives off your contributions, be it in\nthe form of bug reports, feature requests, discussions, ideas, fixes, or other\ncode changes. Please read [these guidelines][docs-contributing] if you want to\ncontribute. And please mind the [code of conduct][docs-coc] for all\ninteractions with the community.\n\n## Versioning\n\nThe project adopts the [semantic versioning][res-sem-ver] scheme for versioning.\nCurrently the service is in beta stage, so the API may change and even break\nwithout further notice. However, once we deem the service stable and \"feature\ncomplete\", the major, minor and patch version will shadow the supported WES\nversion, with the build version representing proWES-internal updates.\n\n## License\n\nThis project is covered by the [Apache License 2.0][badge-url-license] also\n[shipped with this repository][docs-license].\n\n## Contact\n\nproWES is part of [ELIXIR Cloud \u0026 AAI][res-elixir-cloud-aai], a multinational\neffort at establishing and implementing FAIR data sharing and promoting\nreproducible data analyses and responsible data handling in the life sciences.\n\nIf you have suggestions for or find issue with this app, please use the\n[issue tracker][contact-issue-tracker]. If you would like to reach out to us\nfor anything else, you can join our [Slack board][badge-url-chat], start a\nthread in our [Q\u0026A forum][contact-qa], or send us an [email][contact-email].\n\n[![GA4GH logo](images/logo-ga4gh.png)](https://www.ga4gh.org/)\n[![ELIXIR logo](images/logo-elixir.png)](https://www.elixir-europe.org/)\n[![ELIXIR Cloud \u0026 AAI logo](images/logo-elixir-cloud.png)](https://elixir-europe.github.io/cloud/)\n\n[badge-chat]: \u003chttps://img.shields.io/static/v1?label=chat\u0026message=Slack\u0026color=ff6994\u003e\n[badge-ci]: \u003chttps://github.com/elixir-cloud-aai/proWES/actions/workflows/main.yml/badge.svg\u003e\n[badge-license]: \u003chttps://img.shields.io/badge/license-Apache%202.0-blue.svg\u003e\n[badge-url-chat]: \u003chttps://join.slack.com/t/elixir-cloud/shared_invite/zt-1uvebyx1e-NcC0Hof2guT9df~haBdQaw\u003e\n[badge-url-ci]: \u003chttps://github.com/elixir-cloud-aai/proWES/actions/workflows/main.yml\u003e\n[badge-url-license]: \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e\n[contact-email]: \u003cmailto:cloud-service@elixir-europe.org\u003e\n[contact-issue-tracker]: \u003chttps://github.com/elixir-cloud-aai/landing-page/issues\u003e\n[contact-qa]: \u003chttps://github.com/elixir-cloud-aai/elixir-cloud-aai/discussions\u003e\n[docs-coc]: \u003chttps://github.com/elixir-cloud-aai/elixir-cloud-aai/blob/dev/CODE_OF_CONDUCT.md\u003e\n[docs-contributing]: \u003chttps://elixir-cloud-aai.github.io/guides/guide-contributor/\u003e\n[docs-deploy]: deployment/README.md\n[docs-license]: LICENSE\n[image-prowes-overview]: \u003cimages/overview.svg\u003e\n[res-celery]: \u003chttp://www.celeryproject.org/\u003e\n[res-docker]: \u003chttps://www.docker.com/\u003e\n[res-docker-compose]: \u003chttps://docs.docker.com/compose/\u003e\n[res-elixir-cloud-aai]: \u003chttps://elixir-cloud.dcc.sib.swiss/\u003e\n[res-flask]: \u003chttp://flask.pocoo.org/\u003e\n[res-foca]: \u003chttps://github.com/elixir-cloud-aai/foca\u003e\n[res-ga4gh]: \u003chttps://www.ga4gh.org/\u003e\n[res-ga4gh-wes]: \u003chttps://github.com/ga4gh/workflow-execution-service-schemas\u003e\n[res-git]: \u003chttps://git-scm.com/\u003e\n[res-helm]: \u003chttps://helm.sh/\u003e\n[res-kubernetes]: \u003chttps://kubernetes.io/\u003e\n[res-mongodb]: \u003chttps://www.mongodb.com/\u003e\n[res-oauth2]: \u003chttps://oauth.net/2/\u003e\n[res-rabbitmq]: \u003chttps://www.rabbitmq.com/\u003e\n[res-sem-ver]: \u003chttps://semver.org/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fprowes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixir-cloud-aai%2Fprowes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fprowes/lists"}