{"id":22814600,"url":"https://github.com/kit-data-manager/metastore2","last_synced_at":"2025-08-24T17:32:38.687Z","repository":{"id":37098658,"uuid":"285787749","full_name":"kit-data-manager/metastore2","owner":"kit-data-manager","description":"General purpose metadata repository and schema registry service.","archived":false,"fork":false,"pushed_at":"2025-08-18T07:57:02.000Z","size":8387,"stargazers_count":7,"open_issues_count":23,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-18T09:10:56.052Z","etag":null,"topics":["java","json","restful-api","schema","spring-boot","xml"],"latest_commit_sha":null,"homepage":"","language":"Java","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/kit-data-manager.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-07T09:14:21.000Z","updated_at":"2025-07-25T09:42:42.000Z","dependencies_parsed_at":"2023-02-18T08:00:35.498Z","dependency_job_id":"8c0be0cc-3827-4260-884f-eacb64069a7a","html_url":"https://github.com/kit-data-manager/metastore2","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/kit-data-manager/metastore2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-data-manager%2Fmetastore2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-data-manager%2Fmetastore2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-data-manager%2Fmetastore2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-data-manager%2Fmetastore2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kit-data-manager","download_url":"https://codeload.github.com/kit-data-manager/metastore2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-data-manager%2Fmetastore2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271914648,"owners_count":24843178,"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-08-24T02:00:11.135Z","response_time":111,"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":["java","json","restful-api","schema","spring-boot","xml"],"created_at":"2024-12-12T13:09:23.476Z","updated_at":"2025-08-24T17:32:38.679Z","avatar_url":"https://github.com/kit-data-manager.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MetaStore 2 repository\n\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7685007.svg)](https://doi.org/10.5281/zenodo.7685007)\n[![Build Status](https://github.com/kit-data-manager/metastore2/actions/workflows/gradle.yml/badge.svg)](https://github.com/kit-data-manager/metastore2/actions/workflows/gradle.yml)\n[![Codecov](https://codecov.io/gh/kit-data-manager/metastore2/graph/badge.svg)](https://codecov.io/gh/kit-data-manager/metastore2)\n[![CodeQL](https://github.com/kit-data-manager/metastore2/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/kit-data-manager/metastore2/actions/workflows/codeql-analysis.yml)\n![License](https://img.shields.io/github/license/kit-data-manager/metastore2.svg)\n[![docker]](https://github.com/kit-data-manager/metastore2/pkgs/container/metastore2)\n[![currentVersion]](https://github.com/kit-data-manager/metastore2/pkgs/container/metastore2)\n[![size]](https://github.com/kit-data-manager/metastore2/pkgs/container/metastore2)\n\n\n[docker]: \u003chttps://ghcr-badge.egpl.dev/kit-data-manager/metastore2/tags?trim=major\u0026color=steelblue\u0026ignore=main,latest\u0026label=docker versions\u003e\n[currentVersion]: \u003chttps://ghcr-badge.egpl.dev/kit-data-manager/metastore2/latest_tag?trim=major\u0026color=steelblue\u0026label=current version\u003e\n[size]: \u003chttps://ghcr-badge.egpl.dev/kit-data-manager/metastore2/size?color=steelblue\u0026label=size\u003e\n\nMetaStore is a research data repository software for storing metadata documents and schemas.\nQuality and consistency are ensured by associating and validating each document against a schema.\nIt supports JSON and XML.\n\nIt allows you to \n- register an (XML/JSON) schema\n- update an (XML/JSON) schema\n- add metadata linked with a registered schema\n- validate metadata against a registered schema\n- update added metadata\n \n## Installation\nThere are three ways to install metaStore2 as a microservice:\n- [Using](#Installation-via-GitHub-Packages) the image available via [GitHub Packages](https://github.com/orgs/kit-data-manager/packages?repo_name=metastore2) (***recommended***)\n- [Building](#Build-docker-container-locally) docker image locally\n- [Building](#Build-and-run-locally) and running locally\n\n## Installation via GitHub Packages\n### Prerequisites\nIn order to run this microservice via docker you'll need:\n\n* [Docker](https://www.docker.com/) \n\n### Installation\nTypically, there is no need for locally building images as all version are accessible via GitHub Packages.\nHave a look of available images and their tags [here](https://github.com/orgs/kit-data-manager/packages?repo_name=metastore2) \nJust follow instructions [below](#Build-docker-container).\n\n## Build docker container locally\n### Prerequisites\nIn order to run this microservice via docker you'll need:\n\n* [Docker](https://www.docker.com/) \n* [git](https://git-scm.com/) \n\n### Installation\n#### Clone repository\nFirst of all you'll have to clone this repository:\n```\nuser@localhost:/home/user/$ git clone https://github.com/kit-data-manager/metastore2.git\nClone to 'metastore2'\n[...]\nuser@localhost:/home/user/$ cd metastore2\nuser@localhost:/home/user/metastore2$\n```\n\n#### Create image\nNow you'll have to create an image containing the microservice. This can be done via a script.\nOn default the created images will be tagged as follows:\n\n*'latest tag'-'actual date(yyyy-mm-dd)'* (e.g.: 1.2.0-2023-06-27)\n\n```\nuser@localhost:/home/user/metastore2$ bash docker/buildDocker.sh\n---------------------------------------------------------------------------\nBuild docker container ghcr.io/kit-data-manager/metastore2:1.2.0-2023-06-27\n---------------------------------------------------------------------------\n[...]\n---------------------------------------------------------------------------\nNow you can create and start the container by calling ...\n---------------------------------------------------------------------------\nuser@localhost:/home/user/metastore2$\n```\n\n#### Build docker container\nAfter building image you have to create (and start) a container for executing microservice:\n```\n# If you want to use a specific image you may list all possible tags first.\nuser@localhost:/home/user/metastore2$ docker images ghcr.io/kit-data-manager/metastore2 --format {{.Tag}}\n1.2.0-2023-06-27\nuser@localhost:/home/user/metastore2$ docker run -d -p8040:8040 --name metastore4docker ghcr.io/kit-data-manager/metastore2:1.2.0-2023-06-27\n57c973e7092bfc3778569f90632d60775dfecd12352f13a4fd2fdf4270865286\nuser@localhost:/home/user/metastore2$\n```\n\n#### Customize settings\nIf you want to overwrite default configuration of your docker container you have to\n'mount' a config directory containing 'application.properties' with your adapted settings.\nTherefor you have to provide an additional flag to the command mentioned before:\n```\n# Overwriting default settings\n# Create config folder\nuser@localhost:/home/user/metastore2$ mkdir config\n# Place your own 'application.properties' inside the config directory\n# Create/run container\nuser@localhost:/home/user/metastore2$ docker run -d -p8040:8040 -v `pwd`/config:/spring/metastore2/config --name metastore4docker ghcr.io/kit-data-manager/metastore2:1.2.0-2023-06-27\n57c973e7092bfc3778569f90632d60775dfecd12352f13a4fd2fdf4270865286\nuser@localhost:/home/user/metastore2$\n```\n\n#### Stop docker container\nIf you want to stop container just type\n```\nuser@localhost:/home/user/metastore2$ docker stop metastore4docker\n```\n\n#### (Re)start docker container\nIf you want to (re)start container just type\n```\nuser@localhost:/home/user/metastore2$ docker start metastore4docker\n```\n\n## Build and run locally\n### Prerequisites\nIn order to run this microservice via docker you'll need:\n\n* [Java SE Development Kit \u003e= 17](https://openjdk.java.net/) \n* [git](https://git-scm.com/) \n\n### Installation\n#### Clone repository\nFirst of all you'll have to clone this repository:\n```\nuser@localhost:/home/user/$ git clone https://github.com/kit-data-manager/metastore2.git\nClone to 'metastore2'\n[...]\nuser@localhost:/home/user/$ cd metastore2\nuser@localhost:/home/user/metastore2$\n```\n#### Build service \nTo build service just execute the build.sh script:\n```\nuser@localhost:/home/user/metastore2$bash build.sh /PATH/TO/EMPTY/INSTALLATION/DIRECTORY\n---------------------------------------------------------------------------\nBuild microservice of metastore2 at /PATH/TO/EMPTY/INSTALLATION/DIRECTORY\n---------------------------------------------------------------------------\n[...]\n---------------------------------------------------------------------------\nNow you can start the service by calling /PATH/TO/EMPTY/INSTALLATION/DIRECTORY/run.sh\n---------------------------------------------------------------------------\nuser@localhost:/home/user/metastore2$\n```\n#### Customize settings\nIf you want to overwrite default configuration of your docker container you have to\nadd a file named 'application.properties' to the 'config' directory inside your installation\npath (/PATH/TO/EMPTY/INSTALLATION/DIRECTORY)selected before. The added file should\nonly contain your adapted settings. e.g. in case you want to change only the port to '1234' your\n'application.properties' should look like this:\n```\n# Overwriting default settings from ../application.properties\n# Server settings\nserver.port: 1234\n```\n## Build framework using docker \n### Prerequisites\nIn order to run this framework via docker you'll need:\n* [Docker](https://www.docker.com/)\n### Preparation\nYou have to add the following line to your /etc/hosts file:\n```\n127.0.0.1 metastore.docker\n```\n```yaml\nNote for Windows users:\nYou have to add the line to your C:\\Windows\\System32\\drivers\\etc\\hosts file.\n```\nBased on Docker Compose, the entire framework, including elasticsearch and the UI, can now be installed with a single command.\n```\nuser@localhost:/home/user/metastore2$ docker compose up -d\n```\nAs soon all services are running you can browse to http://metastore.docker/index.html\n\n```yaml\nNote: The framework is only for testing purposes and not intended for production use.\nIf you want to use the framework in production mode you have to modify your \nconfiguration (application.properties) and setup a database (e.g. postgres).\n``` \n\n### First steps using framework\nIf you want to use the (external) web frontend please visit:\n\nhttps://kit-data-manager.github.io/webpage/metastore/documentation/frontend/index.html\n\nA small documentation guiding you through the first steps of using the RESTful API you can find at\n\nhttps://kit-data-manager.github.io/webpage/metastore/documentation/REST/index.html\n\nIf you want to use a script for doing so please refer to \n\nhttp://metastore.docker:8040/metastore/swagger-ui.html\n\nin order to see available RESTful endpoints and their documentation. Furthermore, \nyou can use this Web interface to test single API calls in order to get familiar with the \nservice. \n\n### Managing framework using docker\nTo stop and start all services do the following:\n```\nuser@localhost:/home/user/metastore2$ docker compose stop\n[+] Running 6/6\n ⠿ Container frontend.docker            Stopped                            1.5s\n ⠿ Container metastore.docker           St...                             13.1s\n ⠿ Container indexing.docker            Stopped                            0.3s\n ⠿ Container metastore2-dps-1           Stopped                           13.2s\n ⠿ Container rabbitmq.docker            S...                               6.5s\n ⠿ Container elastic.docker             St...                              0.8s\nuser@localhost:/home/user/metastore2$ docker compose start\n[+] Running 6/6\n ⠿ Container frontend.docker     Started                                                                                                                                 0.3s\n ⠿ Container metastore2-dps-1    Started                                                                                                                                10.5s\n ⠿ Container elastic.docker      Started                                                                                                                                 0.2s\n ⠿ Container rabbitmq.docker     Started                                                                                                                                 0.2s\n ⠿ Container metastore.docker    Started                                                                                                                                 0.2s\n ⠿ Container indexing.docker     Started                                                                                                                                 0.2s\nuser@localhost:/home/user/metastore2$\n```\n\n## First steps using MetaStore standalone\nIf you're using MetaStore without the whole framework the service is reachable via\nhttp://localhost:8040/metastore/....\n\n## Setup for production mode\n:WARNING: If you want to use the service in production mode you have modify your configuration (application.properties).\n\n1. Don't open port to public (as long as AAI is not implemented)\n2. Use a productive database (e.g. postgres)\n3. Setup directories for schemata and metadata to a reliable disc. (metastore.schema.schemaFolder, metastore.metadata.metadataFolder)\n4. Check all settings in application.properties. (e.g. CSRF)\n\n:information_source: If MetaStore should be used standalone (without KIT Data Manager) \nyou have to install a database before. (See ['Installation PostgreSQL'](installation_postgres.md)) \n\n#### Setup MetaStore2\nBefore you are able to start the repository microservice, you have to modify the file 'application.properties' according to your local setup. \nTherefor, copy the file 'settings/application-example.properties' to your project folder, rename it to 'application.properties' and customize it. Special attentioned should be payed to the database setup (spring.datasource.*),\nand the paths of schemata (metastore.schema.schemaFolder) / metadata (metastore.schema.metadataFolder). \nto the repository base path. Also, the property 'repo.messaging.enabled' should be changed to 'true' in case you want to use the messaging feature of the repository.\n\n#### Setup database\nSee [setup database](installation_postgres.md#setup-database) and [setup for MetaStore2](installation_postgres.md#setup-metastore2-microservice).\n\n### Start MetaStore2\nAs soon as you finished modifying 'application.properties', you may start the repository microservice by executing the following command inside the installation folder:\n```\nuser@localhost:/home/user/metastore2$bash /PATH/TO/EMPTY/INSTALLATION/DIRECTORY/run.sh\n```\n\n## More Information\n\n* [Information about KIT Data Manager 2](https://github.com/kit-data-manager/base-repo)\n* [REST Documentation MetaStore2 API V1](restDocu.md) \n* [REST Documentation MetaStore2 API V2](restDocuV2.md) \n\n## License\n\nThe MetaStore2 is licensed under the Apache License, Version 2.0.\n\n## Acknowledgements\n\nThis work has been supported by the research program [‘Engineering Digital Futures’](https://www.helmholtz.de/en/research/research-fields/information/engineering-digital-futures/) of the [Helmholtz Association of German Research Centers](https://www.helmholtz.de/en) and the [Helmholtz Metadata Collaboration Platform (HMC)](https://helmholtz-metadaten.de/), with additional support by [NFDI4ING](https://nfdi4ing.de/) (DFG project number 442146713) and [NFDI-MatWerk](https://nfdi-matwerk.de/) (DFG project number 460247524).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkit-data-manager%2Fmetastore2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkit-data-manager%2Fmetastore2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkit-data-manager%2Fmetastore2/lists"}