{"id":46453498,"url":"https://github.com/datacite/events","last_synced_at":"2026-03-06T01:02:28.839Z","repository":{"id":280788549,"uuid":"940005215","full_name":"datacite/events","owner":"datacite","description":"DataCite Events Service","archived":false,"fork":false,"pushed_at":"2026-01-16T18:31:34.000Z","size":1026,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-17T06:27:47.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datacite.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":"2025-02-27T13:13:25.000Z","updated_at":"2025-11-26T11:17:25.000Z","dependencies_parsed_at":"2025-03-05T10:31:30.155Z","dependency_job_id":"0accab28-16f3-4ef6-829f-3872d8f36b11","html_url":"https://github.com/datacite/events","commit_stats":null,"previous_names":["datacite/events"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/datacite/events","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacite%2Fevents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacite%2Fevents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacite%2Fevents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacite%2Fevents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datacite","download_url":"https://codeload.github.com/datacite/events/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacite%2Fevents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30156850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T22:39:40.138Z","status":"ssl_error","status_checked_at":"2026-03-05T22:39:24.771Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-03-06T01:02:27.957Z","updated_at":"2026-03-06T01:02:28.802Z","avatar_url":"https://github.com/datacite.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DataCite Events Service\n\n[![Coverage Status](https://coveralls.io/repos/github/datacite/events/badge.svg?branch=main\u0026t=timestamp)](https://coveralls.io/github/datacite/events?branch=main\u0026t=timestamp)\n\nThis is the code repository for the DataCite Events REST API.\n\n---\n\n### Process Flow Diagram\n\n![Event Service Process Flow Diagram](images/events_service_process_flow.jpg)\n\n---\n\n### Dependencies\n\nLocal application development is dependent on [Docker](https://www.docker.com/). Ensure that is installed locally.\n\nLocal application development is dependent on [DataCite LocalStack Repository](https://github.com/datacite/datacite_localstack). Ensure that this is cloned locally.\n\nLocal application development is dependent on [Lupo](https://github.com/datacite/lupo). Ensure this is cloned locally.\n\n---\n\n### Release management\n\n#### What is semantic versioning?\n\nSemantic versioning (SemVer) is a way of numbering software releases using the format **MAJOR.MINOR.PATCH** (like `1.4.2`) to indicate the type of changes made.\n\n#### Why do we use it?\n\nSemantic versioning helps developers and users quickly understand whether an update will:\n\n- break existing code,\n- add new features, or\n- just fix bugs.\n\nThis makes it easier to manage dependencies and upgrades safely.\n\n#### How does it work?\n\n- **MAJOR** version (`X.y.z`):  \n  Increment when you make incompatible (breaking) changes.  \n  _Example: `1.2.3` → `2.0.0` (old code may break)_\n\n- **MINOR** version (`x.Y.z`):  \n  Increment when you add new, backward-compatible features.  \n  _Example: `1.2.3` → `1.3.0` (new features, old code still works)_\n\n- **PATCH** version (`x.y.Z`):  \n  Increment when you make backward-compatible bug fixes.  \n  _Example: `1.2.3` → `1.2.4` (only bug fixes, safe to update)_\n\n#### Examples\n\n| Version Change | What Happened            | Example |\n| -------------- | ------------------------ | ------- |\n| 1.2.3 → 2.0.0  | Breaking change          | MAJOR   |\n| 1.2.3 → 1.3.0  | New feature, no breakage | MINOR   |\n| 1.2.3 → 1.2.4  | Bug fix, no breakage     | PATCH   |\n\n### Special labels\n\n- **Pre-release:** `2.0.0-beta`, `1.3.0-rc.1`\n- **Build metadata:** `1.2.3+exp.sha.5114f85`\n\n#### Summary\n\nSemantic versioning uses a 3-part number to clearly communicate the impact of software changes, helping everyone update safely and confidently.\n\nFor more: [semver.org](https://semver.org/)\n\n---\n\n### How to run the application\n\n#### Step 1\n\nStart the DataCite Localstack Container.\n`docker compose up --build`\n\n#### Step 2\n\nStart the Lupo Container.\n`docker compose -f ./docker-compose.localstack.yml up --build`\n\n#### Step 3\n\nStart the Events Service Container.\n`docker compose up --build`\n\n### Where is the Events Service API available?\n\nThe API is available locally at http://localhost:8700\n\n### Where is the database?\n\nCurrently the database and it's schema is managed by the Lupo application.\nThe Events Service simply communicates with this database.\nThe Events services does not own any part of the database and is not responsible for mutating the schema.\nFor local and testing purposes we use the [activerecord-nulldb-adapter](https://github.com/nulldb/nulldb) Ruby Gem.\n\n---\n\n### Adding new Shoryuken workers\n\n1. Add workers to the app/workers directory\n2. Ensure you set the shoryuken_options e.g. `shoryuken_options queue: -\u003e { \"#{ENV['RAILS_ENV']}\\_events\" }, auto_delete: true`\n3. Queues use environment prefixes. The prefix is set with the environment variable RAILS_ENV locally.\n\n---\n\n### Starting the Shoryuken workers\n\n1. Workers are spun up by default on app start.\n2. The environment variable DISABLE_QUEUE_WORKER is used in development to switch the worker on or off when you start the container.\n3. The DISABLE_QUEUE_WORKER is set to false by defalt in the docker-compose.yml i.e. DISABLE_QUEUE_WORKER=false\n4. If you you want to disable the queue workers from starting up you can set DISABLE_QUEUE_WORKER to true i.e. DISABLE_QUEUE_WORKER=true\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatacite%2Fevents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatacite%2Fevents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatacite%2Fevents/lists"}