{"id":35180927,"url":"https://github.com/marian13/convenient_service","last_synced_at":"2026-04-06T06:03:52.086Z","repository":{"id":60138980,"uuid":"529980150","full_name":"marian13/convenient_service","owner":"marian13","description":"Ruby Service Objects with Steps and more.","archived":false,"fork":false,"pushed_at":"2026-02-23T14:59:51.000Z","size":368875,"stargazers_count":41,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-23T22:51:27.687Z","etag":null,"topics":["ruby","service-object","service-object-with-steps"],"latest_commit_sha":null,"homepage":"https://userdocs.convenientservice.org","language":"Ruby","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/marian13.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/contributing.md","funding":null,"license":"LICENSE.txt","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":"2022-08-28T21:08:59.000Z","updated_at":"2026-02-23T15:00:49.000Z","dependencies_parsed_at":"2024-03-22T00:30:09.261Z","dependency_job_id":"a9bea25d-38c3-4143-9877-9c20e4fa0165","html_url":"https://github.com/marian13/convenient_service","commit_stats":{"total_commits":770,"total_committers":5,"mean_commits":154.0,"dds":0.0662337662337662,"last_synced_commit":"71209e17617aae2d90f15515942ee697a9a7507a"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/marian13/convenient_service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marian13%2Fconvenient_service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marian13%2Fconvenient_service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marian13%2Fconvenient_service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marian13%2Fconvenient_service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marian13","download_url":"https://codeload.github.com/marian13/convenient_service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marian13%2Fconvenient_service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31461534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"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":["ruby","service-object","service-object-with-steps"],"created_at":"2025-12-29T01:48:58.885Z","updated_at":"2026-04-06T06:03:52.081Z","avatar_url":"https://github.com/marian13.png","language":"Ruby","readme":"\u003c!-- AUTHOR: Marian Kostyk \u003cmariankostyk13895@gmail.com\u003e --\u003e\n\u003c!-- LICENSE: LGPLv3 \u003chttps://www.gnu.org/licenses/lgpl-3.0.html\u003e --\u003e\n\n\u003c!-- stand_with_ukraine:start --\u003e\n\u003ch1 align=\"center\"\u003e\n  #StandWithUkraine\n\u003c/h1\u003e\n\n[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://vshymanskyy.github.io/StandWithUkraine)\n\u003c!-- stand_with_ukraine:end --\u003e\n\n\u003c!-- header:start --\u003e\n\u003c!-- TODO: Remove html to display in YARD with common mark --\u003e\n\u003ch1 align=\"center\"\u003e\n  Convenient Service\n\u003c/h1\u003e\n\u003c!-- header:end --\u003e\n\n\u003c!-- badges_docs:start --\u003e\n\u003c!-- NOTE: Docs for badges can be found here - https://shields.io --\u003e\n\u003c!-- badges_docs:end --\u003e\n\n\u003c!-- badges:start --\u003e\n[![Ruby](https://img.shields.io/badge/ruby-%23CC342D.svg?style=for-the-badge\u0026logo=ruby\u0026logoColor=white)](https://www.ruby-lang.org/en/)\n\n[![Gem Version](https://badge.fury.io/rb/convenient_service.svg)](https://rubygems.org/gems/convenient_service) [![Gem Downloads](https://img.shields.io/gem/dt/convenient_service.svg)](https://rubygems.org/gems/convenient_service)  ![GitHub repo size](https://img.shields.io/github/repo-size/marian13/convenient_service) [![GitHub Actions CI](https://github.com/marian13/convenient_service/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/marian13/convenient_service/actions/workflows/ci.yml) [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard) [![Coverage Status](https://coveralls.io/repos/github/marian13/convenient_service/badge.svg)](https://coveralls.io/github/marian13/convenient_service?branch=main) [![yard docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://marian13.github.io/convenient_service/)\n[![Convenient Service on stackoverflow](https://img.shields.io/badge/stackoverflow-community-orange.svg?logo=stackoverflow)](https://stackoverflow.com/tags/convenient-service)\n[![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/user?u=31435716\u0026fan_landing=true)\n[![License: LGPL-3.0](https://img.shields.io/badge/license-LGPL--3.0-yellow.svg)](https://www.gnu.org/licenses/lgpl-3.0.html)\n\n[![GitHub Repo](https://img.shields.io/badge/github-repo-blue?logo=github)](https://github.com/marian13/convenient_service) [![GitLab Mirror](https://img.shields.io/badge/gitlab-mirror-orange?logo=gitlab)](https://gitlab.com/marian13/convenient_service) [![Codeberg Mirror](https://img.shields.io/badge/codeberg-mirror-green?logo=codeberg)](https://codeberg.org/marian13/convenient_service)\n\n\u003c!-- NOTE: The \"Visit Count\" and the \"Inline Docs\" badges are commented since they are failing with errors most of the time --\u003e\n\u003c!-- ![visitors](https://visitor-badge.glitch.me/badge?page_id=marian13/convenient_service) --\u003e\n\u003c!-- [![inline docs](http://inch-ci.org/github/marian13/convenient_service.svg?branch=main)](http://inch-ci.org/github/marian13/convenient_service) --\u003e\n\u003c!-- badges:end --\u003e\n\n\u003c!-- logo:start --\u003e\n\u003c!-- TODO: Remove html to display in YARD with common mark --\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/marian13/convenient_service/main/logo.png\" width=\"300\"\u003e\n\u003c/p\u003e\n\u003c!-- logo:end --\u003e\n\n\u003c!-- general_description:start --\u003e\nManage complex business logic in Ruby applications using Service Objects with Results and Steps.\n\nHide technical details with Configs, Concerns and Middlewares.\n\nGroup related code with Features and Entries.\n\u003c!-- general_description:end --\u003e\n\n\u003c!-- warning:start --\u003e\n## ❗❗❗ WARNING ❗❗❗\n\nThis library is on the final stage of development before the v1.0.0 version. 90% of the public API is polished, but it still may be subject to change. It has already been successfully used in production environments for more than two years. The stable release is planned rather sooner than later. Less and less breaking changes are expected. Use the current version at your own risk. Ruby 2.7+, JRuby 9.4+ (TruffleRuby support is planned as well). Thanks.\n\u003c!-- warning:end --\u003e\n\n\u003c!-- links:start --\u003e\n## Quick Links\n\n- Visit the [All-in-One Presentation](https://marian13.github.io/static_content/convenient_service/presentations/all_in_one) to get a quick overview.\n\n- Check out [Convenient Service Official User Docs](https://userdocs.convenientservice.org/) for installation, requirements, and usage guides.\n\n- Read [the API docs](https://apidocs.convenientservice.org/) to get familiar with the newest functionality that is not documented yet.\n\n- Create [an issue](https://github.com/marian13/convenient_service/issues) if you are going to report a bug.\n\n- Start [a discussion](https://github.com/marian13/convenient_service/discussions) when you would like to request a new feature.\n\n- Open a PR to [convenient_service_docs](https://github.com/marian13/convenient_service_docs) to add/update user docs.\n\n- [RubyGems](https://rubygems.org/gems/convenient_service).\n\n- [Static Content](https://github.com/marian13/static_content/tree/main/convenient_service) repo.\n\n- [Convenient Service Integration](https://github.com/marian13/convenient_service_integration) machinery.\n\n- Have a look at [Convenient Service Development Wiki](https://github.com/marian13/convenient_service/wiki) for the contribution tutorials.\n\n\u003c!-- links:end --\u003e\n\n---\n\n\u003c!-- author:start --\u003e\nCopyright (c) 2022-2026 Marian Kostyk.\n\u003c!-- author:end --\u003e\n","funding_links":["https://www.patreon.com/user?u=31435716\u0026fan_landing=true"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarian13%2Fconvenient_service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarian13%2Fconvenient_service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarian13%2Fconvenient_service/lists"}