{"id":24641155,"url":"https://github.com/elixir-cloud-aai/crate-db","last_synced_at":"2026-04-19T10:34:22.345Z","repository":{"id":242334846,"uuid":"797124533","full_name":"elixir-cloud-aai/crate-db","owner":"elixir-cloud-aai","description":"Microservice for handling RO-Crates","archived":false,"fork":false,"pushed_at":"2024-10-28T13:15:44.000Z","size":90,"stargazers_count":1,"open_issues_count":20,"forks_count":0,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-03-20T11:49:02.263Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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":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}},"created_at":"2024-05-07T08:38:29.000Z","updated_at":"2024-10-28T13:15:45.000Z","dependencies_parsed_at":"2024-07-28T22:42:37.840Z","dependency_job_id":"57bd2865-78be-4d83-b79d-0a2c901e44f3","html_url":"https://github.com/elixir-cloud-aai/crate-db","commit_stats":null,"previous_names":["elixir-cloud-aai/crate-db"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elixir-cloud-aai/crate-db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcrate-db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcrate-db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcrate-db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcrate-db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elixir-cloud-aai","download_url":"https://codeload.github.com/elixir-cloud-aai/crate-db/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elixir-cloud-aai%2Fcrate-db/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32004039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":[],"created_at":"2025-01-25T12:12:29.655Z","updated_at":"2026-04-19T10:34:22.325Z","avatar_url":"https://github.com/elixir-cloud-aai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ELIXIR Crate DB\n\n[![License][badge-license]][badge-url-license]\n[![Python 3.11][badge-python]][badge-url-python]\n[![Development Status][badge-status]][badge-url-status]\n[![GitHub contributors][badge-contributors]][badge-url-contributors]\n[![Ruff][badge-ruff]][badge-url-ruff]\n\n## Introduction\n\nVarious research artifacts are produced daily around the world, but \nmanaging them is a tedious task for researchers. Researchers prefer to \nspend more time on new discoveries rather than finding efficient ways to \nstore, retrieve, or share their data. This project aims to alleviate \nthese challenges by providing a robust backend system for managing \nRO-Crates—standardized packages for research data and metadata.\n\n## User Story\n\nThe end user (research publisher/scientist) will be able to manage any \nof the RO-Crates developed for personal or public research. The main \nfunctions include CRUD operations on RO-Crates and publishing them to \nZenodo. This project can be summarized as an \"Efficient RO-Crate \nManagement System\". Future enhancements include developing a frontend \ncomponent to further simplify these operations.\n\n## Project Goals \u0026 Milestones\n\n### Goals\n\n- Develop a scalable and extensible [Flask][flask] app using [FOCA][foca].\n- Implement efficient search functionality using \n  [ElasticSearch][elasticsearch].\n- Enable access controls over the application.\n- Create endpoints for publishing/unpublishing RO-Crates to/from \n  [Zenodo][zenodo].\n- Package the project as a Python dependency.\n- Write examples, tests, and documentation.\n\n## Installation\n\n### Requirements\n\nEnsure you have the following software installed:\n\n* Docker (19.03.4, build 9013bf583a)\n* docker-compose (1.25.5)\n* Git (2.17.1)\n\n\u003e Indicated versions were used for developing/testing. Other versions may or\n\u003e may not work. Please let us know if you encounter any issues with versions\n\u003e _newer_ than the listed ones.\n\n### Deploy app\n\nClone repository:\n\n```bash\ngit clone https://github.com/elixir-cloud-aai/crate-db.git\n```\n\nBuild and run services in detached/daemonized mode:\n\n```bash\ndocker-compose up -d --build\n```\n\n## Implementation Details\n\n### Abstract\n\nThe project focuses on developing a backend system for managing \nRO-Crates via API endpoints. The system provides functionalities for \nstoring, retrieving, publishing, and unpublishing RO-Crates.\n\n### Flow\n\n- **Storage:** Researchers submit RO-Crate data and metadata via API \n  endpoints. The system validates and stores the data securely.\n- **Retrieval:** Researchers query the system via API endpoints to \n  locate specific RO-Crates. The system returns the data in the \n  specified format.\n- **Publishing/Unpublishing:** Integration with [Zenodo][zenodo] allows \n  researchers to publish/unpublish RO-Crates. API endpoints facilitate \n  these processes.\n\n### Architecture\n\nThree main components will be used:\n\n1. **[MinIO][minio]:** Serves as an object storage system for storing \n   zipped RO-Crates.\n2. **[MongoDB][mongodb]:** Stores metadata and zipped RO-Crates.\n3. **RO-Crate Microservice:** Central package interacting with other \n   components\n\n### Why MinIO?\n\nMinIO is chosen for its high performance, scalability, cloud-native \ncompatibility, security features, and cost-effectiveness. It supports \nobject storage, horizontal scaling, and built-in encryption, making it \nideal for our project's needs.\n\n## Technical Details\n\n### Technologies\n\n- **[FOCA][foca]:** Enables fast development of OpenAPI-based HTTP API \n  microservices in [Flask][flask].\n- **[MongoDB][mongodb] and [MinIO][minio]:** Used for storage.\n- **[Zenodo APIs][zenodo]:** Used for publishing research artifacts.\n\n### Challenges\n\n1. **Complexity of RO-Crate Structure:** Designing efficient storage \n   and retrieval mechanisms.\n2. **Integration with External Services:** Handling authentication, \n   authorization, and error handling.\n3. **Optimizing Performance:** Ensuring efficient uploads, downloads, \n   and search operations.\n4. **Security and Data Integrity:** Protecting sensitive data and \n   ensuring integrity during transmission and storage.\n\n## Future Prospects\n\nFuture development will focus on thorough implementation of CRUD \noperations, emphasizing simplicity and robustness. Stretch goals \ninclude advanced operations and developing a frontend component for \nenhanced user interaction and accessibility. This project aims to \nevolve into a comprehensive solution for managing RO-Crates efficiently \nand effectively.\n\n## Contributing\n\nThis project is a community effort and lives off your contributions, be \nit in the form of bug reports, feature requests, discussions, ideas, \nfixes, or other code changes. Please read [these guidelines][docs-contributing] \nif you want to contribute. And please mind the [code of conduct][docs-coc] \nfor all interactions with the community.\n\n## Versioning\n\nThe project adopts the [semantic versioning][semver] scheme for \nversioning. Currently, the service is in alpha stage, so the API may \nchange and even break without further notice.\n\n## License\n\nThis project is covered by the [Apache License 2.0][badge-url-license] \nalso [shipped with this repository][docs-license].\n\n## Contact\n\nCrate-DB is part of [ELIXIR Cloud \u0026 AAI][res-elixir-cloud-aai], a \nmultinational effort at establishing and implementing FAIR data sharing \nand promoting reproducible data analyses and responsible data handling \nin 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 \nto us for anything else, you can join our [Slack board][badge-url-chat], \nstart a thread in our [Q\u0026A forum][contact-qa], or send us an \n[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-license]: \u003chttps://img.shields.io/badge/License-Apache_2.0-blue.svg\u003e\n[badge-python]: \u003chttps://img.shields.io/badge/python-3.11-blue.svg\u003e\n[badge-status]: \u003chttps://img.shields.io/badge/status-alpha-yellow.svg\u003e\n[badge-contributors]: \u003chttps://img.shields.io/github/contributors/elixir-cloud-aai/crate-db\u003e\n[badge-ruff]: \u003chttps://img.shields.io/badge/code%20style-ruff-000000.svg\u003e\n[badge-url-license]: ./LICENSE\n[badge-url-python]: \u003chttps://www.python.org/downloads/release/python-311/\u003e\n[badge-url-status]: \u003chttps://github.com/elixir-cloud-aai/crate-db\u003e\n[badge-url-contributors]: \u003chttps://github.com/elixir-cloud-aai/crate-db/graphs/contributors\u003e\n[badge-url-ruff]: \u003chttps://docs.astral.sh/ruff/\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-license]: LICENSE\n[elasticsearch]: \u003chttps://www.elastic.co/elasticsearch/\u003e\n[zenodo]: \u003chttps://zenodo.org/\u003e\n[flask]: \u003chttps://flask.palletsprojects.com/en/3.0.x/\u003e\n[foca]: \u003chttps://github.com/elixir-cloud-aai/foca\u003e\n[minio]: \u003chttps://min.io/\u003e\n[mongodb]: \u003chttps://www.mongodb.com/\u003e\n[res-elixir-cloud-aai]: \u003chttps://elixir-cloud.dcc.sib.swiss/\u003e\n[semver]: \u003chttps://semver.org/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fcrate-db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felixir-cloud-aai%2Fcrate-db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felixir-cloud-aai%2Fcrate-db/lists"}