{"id":28591453,"url":"https://github.com/thehyve/podium","last_synced_at":"2025-10-29T23:03:49.150Z","repository":{"id":17348441,"uuid":"80543393","full_name":"thehyve/podium","owner":"thehyve","description":"Podium request portal for biobanks","archived":true,"fork":false,"pushed_at":"2023-01-07T06:48:17.000Z","size":26668,"stargazers_count":12,"open_issues_count":23,"forks_count":5,"subscribers_count":8,"default_branch":"dev","last_synced_at":"2025-06-11T09:14:53.051Z","etag":null,"topics":["biobanking","java","microservices","podium","request-portal"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thehyve.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-31T17:23:37.000Z","updated_at":"2024-11-22T15:35:22.000Z","dependencies_parsed_at":"2023-01-11T20:26:26.700Z","dependency_job_id":null,"html_url":"https://github.com/thehyve/podium","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thehyve/podium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thehyve%2Fpodium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thehyve%2Fpodium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thehyve%2Fpodium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thehyve%2Fpodium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thehyve","download_url":"https://codeload.github.com/thehyve/podium/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thehyve%2Fpodium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281713535,"owners_count":26548732,"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","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["biobanking","java","microservices","podium","request-portal"],"created_at":"2025-06-11T09:14:51.343Z","updated_at":"2025-10-29T23:03:49.094Z","avatar_url":"https://github.com/thehyve.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/thehyve/podium.svg?branch=dev)](https://travis-ci.org/thehyve/podium)\n[![codebeat badge](https://codebeat.co/badges/f225e930-5ea9-4cd0-95cd-9cf7a17169ed)](https://codebeat.co/projects/github-com-thehyve-podium-master)\n[![codecov](https://codecov.io/gh/thehyve/podium/branch/dev/graph/badge.svg)](https://codecov.io/gh/thehyve/podium)\n\n\n# Welcome to the Podium request portal\n\n**Podium** is the request portal for samples, data and images from biobanks\nwith the purpose to uniformize the request and review processes\nfor all associated users and organisations.\n\n\n\n## Microservices overview\n\nPodium is built in a microservices architecture which works in following way:\n\n1. **Podium Registry**\u003cbr\u003e\nThe registry is a runtime application on which all applications registers and get their configuration from.\nIt also provides runtime monitoring dashboards.\nThe registry application is available in the [Podium Registry] repository. \n\n2. **Podium UAA**\u003cbr\u003e\nPodium UAA is  a user accounting and authorizing service for securing microservices using the OAuth2 \nauthorization protocol. Podium UAA is an fully configured OAuth2 authorization server with the users and roles \nendpoints inside, wrapped into a usual JHipster application. This allows the developer to deeply configure every aspect \nof his user domain, without restricting on policies by other ready-to-use UAAs.\n\n3. **Podium Gateway**\u003cbr\u003e\nThe gateway serves the Angular frontend application, contains a component\nfor handling requests and deliveries, and also handles web traffic\n\nThe services have to be started in order.\n\n\n\n## Development\n\n### Database setup\n\nFor development, you can create a Postgres database locally with `psql`:\n`sudo -u postgres psql`\n```sql\ncreate role \"podiumUser\" with password 'podiumUser' login;\ncreate database \"podiumUaaDev\";\ncreate database \"podiumGatewayDev\";\ngrant all on database \"podiumUaaDev\" to \"podiumUser\";\ngrant all on database \"podiumGatewayDev\" to \"podiumUser\";\n```\n\n### Dependencies\n\nBefore you can build this project, you must install and configure the following dependencies on your machine:\n1. [Maven]: Maven is used to build the microservices and to publish them to a Nexus repository.\n1. [Node.js]: We use Node to run a development web server and build the project.\n   Depending on your system, you can install Node either from source or as a pre-packaged bundle.\n2. [Yarn]: We use Yarn to manage Node dependencies.\n   Depending on your system, you can install Yarn either from source or as a pre-packaged bundle.\n\nJava dependencies are managed by Maven in the `pom.xml` files. Versions of packages are\nconfigured in the root [pom.xml](pom.xml).\n[Yarn] is used to manage CSS and JavaScript dependencies for the user interface application.\nYou can upgrade dependencies by specifying a newer version in [package.json](podium-gateway/package.json).\nYou can use `npm install`, `yarn update` and `yarn install` to manage dependencies.\n\n### Install\n\nFirst everything should be installed by running the following in the root folder:\n\n```bash\nmvn clean install\n```\n\n### Run\n\n1. **Start Podium Registry**\u003cbr\u003e\n[Podium Registry] needs to be up and running before the UAA and Gateway services start.\nGo to your `podium-registry` folder and start the registry with `mvn`.\nThe user interface of the registry will be available at [http://localhost:8761](http://localhost:8761).\n\n2. **Start ElasticSearch**\nRun `docker run --name podium-elasticsearch -p 9200:9200 -p 9300:9300 -e \"discovery.type=single-node\" docker.elastic.co/elasticsearch/elasticsearch:7.6.2`.\n\n3. **Start Podium UAA**\u003cbr\u003e\nOpen a new terminal and navigate to the `podium-uaa` folder and start the UAA service with \n`mvn`. The UAA service will be listening to port 9999.\n\n4. **Start Podium Gateway**\u003cbr\u003e\nOpen a new terminal and run the following commands in the `podium-gateway` folder:\n```bash\n# start the podium gateway service\nmvn\n```\nThe application is now available at [http://localhost:8080](http://localhost:8080).\n\nTo create a blissful development experience, where your browser auto-refreshes when files change on your hard drive,\nyou can start a hot reloading user interface with:\n```bash\n# serve the user interface for hot reloading\nnpm run start\n```\nThis will open the application at [http://localhost:9000](http://localhost:9000) in your browser.\n\n### Building for production\n\nTo optimize the podiumGateway application for production, run:\n```bash\n# Build for production\nmvn -DskipTests -Pprod clean package\n\n# Publish to Nexus\nmvn -DskipTests -Pprod clean deploy\n```\nThis will concatenate and minify the client CSS and JavaScript files.\nIt will also modify `index.html` so it references these new files.\nTo ensure everything worked, run:\n```bash\n    java -jar target/*.war\n```\nThen navigate to [http://localhost:8080](http://localhost:8080) in your browser.\n\n\n\n## Installation\n\nFor installing Podium for production use, there is an [installation manual](docs/installation.md).\n\n\n\n## Testing\n\n### Microservice tests\n\nTo launch a service's tests, run in its folder:\n```bash\nmvn -Dspring.profiles.active=h2,test test\n```\nTests are run automatically on [Travis](https://travis-ci.org/thehyve/podium/branches).\n\n### User interface tests\n\nUser interface unit tests are run by [Karma] and written with [Jasmine].\nThey're located in `src/test/javascript/` in each of the service folders and can be run with:\n\n```bash\nyarn test\n```\n\n### End to end (e2e) testing\n\n#### Dependencies\n\nThe end to end (e2e) tests use [Protractor], [Cucumber] and are by default configured to use Chrome.\nThey can only be run against a development environment.\nThe reason for this is that the setup steps makes use of routes from podium-uaa [TestResource]. These routes are excluded for production.\n\n**1. Install protractor:**\n\nPart of the dev dependencies:\n```bash\nyarn install\n```\n\n**2. Run a development [environment](#development)**\n\n**3. Run tests**\n```bash\n# Navigate to the test folder\ncd podium-gateway/src/test/javascript/\n\n# Run all tests\nnpx protractor\n\n# Run tests for a specific feature file\nnpx protractor --specs=e2e/features/bbmri-admin-organisations.feature\n```\n\nBy default the test suite expects the user interface to be available at port 8080.\nTo change this, set the `baseUrl` setting in [protractor.conf.js](podium-gateway/src/test/javascript/protractor.conf.js).\n\n#### Adding tests\nTest are made up out of three main components.\n- A scenario described in a feature file. `e2e/features/*.feature`\n- Step definitions `e2e/stepdefinitions/*.ts`\n- Test data `e2e/pages/*.ts` `e2e/data/data-dictionary.ts` `e2e/personas/persona-dictionary.ts`\n\nThe director class is used to bind the test data to test scripts. dataIds that are in .feature files can be used to \nretrieve test data from the appropriate dictionary.\nfor examples on how to do this look at the .ts files in `e2e/stepdefinitions/*.ts`\n\n\n\n## License\n\nCopyright \u0026copy; 2017, 2018 \u0026nbsp; The Hyve and respective contributors.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the Apache 2.0 License\npublished by the Apache Software Foundation, either version 2.0 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nApache 2.0 License for more details.\n\nYou should have received a copy of the [Apache 2.0 License](al-2.0.txt)\nalong with this program. If not, see\nhttps://www.apache.org/licenses/LICENSE-2.0.txt.\n\n\n[JHipster Homepage and latest documentation]: https://jhipster.github.io\n[JHipster 4.0.0 archive]: https://podium.github.io/documentation-archive/v4.0.0\n[Setting up Continuous Integration]: https://jhipster.github.io/documentation-archive/v4.0.0/setting-up-ci/\n\n[Maven]: https://maven.apache.org/\n[Node.js]: https://nodejs.org/\n[Npm]: https://www.npmjs.com/\n[Yarn]: https://yarnpkg.org/\n[Webpack]: https://webpack.github.io/\n[Karma]: http://karma-runner.github.io/\n[Jasmine]: http://jasmine.github.io/2.0/introduction.html\n[Protractor]: https://www.protractortest.org/\n[Cucumber]: https://github.com/cucumber/cucumber-js\n[Leaflet]: http://leafletjs.com/\n[DefinitelyTyped]: http://definitelytyped.org/\n\n[Podium Registry]: https://github.com/thehyve/podium-registry\n[TestResource]: https://github.com/thehyve/podium/blob/master/podium-uaa/src/main/java/nl/thehyve/podium/web/rest/TestResource.java\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehyve%2Fpodium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthehyve%2Fpodium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehyve%2Fpodium/lists"}