{"adoption": {"forks": 1152, "observed_at": "2026-08-28T04:09:45.741528+00:00", "stars": 6620}, "canonical_url": "https://ross.abutalabs.com/products/ferry", "card": {"archived": false, "artifact_type": "application", "description": "本系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统，当然也可以称之为工作流引擎。 致力于减少跨部门之间的沟通，自动任务的执行，提升工作效率与工作质量，减少不必要的工作量与人为出错率。", "domain": ["developer-tools", "web-development", "self-hosted", "hr"], "enriched": true, "function": ["workflow-automation", "auth", "authorization", "web-framework", "email", "scheduling"], "health_score": 27, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["lanyulei/ferry"], "name": "lanyulei/ferry", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2025-03-21T04:43:26+00:00", "repo": "lanyulei/ferry", "stars": 6620, "tags": ["ticketing-system", "workflow-engine", "approval-process", "rbac", "casbin", "gin", "vue", "element-ui", "work-order", "automation", "web-server", "docker"], "topics": [], "urls": [], "use_cases": ["submit and track approval tickets across departments", "build custom approval workflows without coding", "automate task notifications via email hooks", "manage users, roles, and API permissions with RBAC", "track ticket statistics and to-do lists", "route tickets conditionally with exclusive and parallel gateways"], "what_it_is": "Ferry is an open-source ticketing and workflow engine built with Gin (Go) and Vue + Element UI. It supports configurable approval flows, templates, task hooks, RBAC permission management, and ticket statistics to streamline cross-department collaboration.", "when_to_avoid": ["you need notifications beyond email without writing custom task scripts", "you need a SaaS-style managed solution rather than self-hosting", "you need deep customization beyond the provided workflow features"], "when_to_choose": ["you need a self-hosted ticket/approval system with customizable flows", "you want a workflow engine with hooks and conditional routing", "you need integrated RBAC permission control for menus, buttons, and APIs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ferry", "repo": "lanyulei/ferry", "role": "main", "score": 38}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.741528+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:43:18.301674+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "86be5416e5c79ed1b272a8823d71341ddf4ced4c5f4c23bff8e5d363dfb7bdea", "fetched_at": "2026-08-28T04:09:45.741528+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanyulei/ferry"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 12, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2242, "days_push": 530, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 38, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}