{"adoption": {"forks": 413, "observed_at": "2026-08-28T04:07:27.150792+00:00", "stars": 2872}, "canonical_url": "https://ross.abutalabs.com/products/viewflow", "card": {"archived": false, "artifact_type": "library", "description": "Reusable workflow library for Django", "domain": ["web-development", "backend", "developer-tools"], "enriched": true, "function": ["workflow-automation", "web-framework", "ui-components", "form-handling", "state-management"], "health_score": 98, "homepage": "http://viewflow.io", "language": "Python", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["viewflow/viewflow"], "name": "viewflow/viewflow", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-09T10:27:03+00:00", "repo": "viewflow/viewflow", "stars": 2872, "tags": ["django", "bpmn", "workflow-engine", "low-code", "business-applications", "crud", "finite-state-machine", "automation", "web-server"], "topics": ["django", "workflow-engine", "workflow", "bpmn", "python", "process-engine"], "urls": [], "use_cases": ["build business process workflows in Django", "model BPMN approval processes as code", "add CRUD and reporting dashboards to a Django app", "implement multi-step user task workflows with assignments", "replace django-fsm with a maintained workflow engine", "rapidly prototype internal business tools"], "what_it_is": "Viewflow is a reusable low-code library for Django that provides a BPMN workflow engine, CRUD components, forms, and reporting dashboards for building business applications. It lets developers describe business processes as Python code while retaining full control over Django's native features.", "when_to_avoid": ["your project doesn't use Django", "you need a standalone microservice workflow engine rather than an in-app library", "you require a permissive license - the open-source core is AGPL-3.0 and advanced features are commercial", "you only need simple background job scheduling rather than human-in-the-loop workflows"], "when_to_choose": ["you're building Django-based business applications with approval or task workflows", "you want low-code speed but full Python/Django customization", "you need BPMN-style process modeling without leaving your codebase", "you want bundled CRUD, forms, and reporting in one package"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/viewflow", "repo": "viewflow/viewflow", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "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:07:27.150792+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.150792+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:35:51.759087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6496508e04af9c9e12c581c9c410e873a79577a53c6730cd92d9945cab5bc68b", "fetched_at": "2026-08-28T04:07:27.150792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/viewflow/viewflow"}, {"content_hash": "2322a1ec5883b9a5370b68fe276735cc8bf26f60b9ed72cf389cad5f31d84639", "fetched_at": "2026-08-29T09:51:28.371937+00:00", "kind": "homepage", "missing": false, "url": "http://viewflow.io"}, {"content_hash": "7a0d9bcd70ae7e96d9e1efa4471eed01f948267f22f048185d43cd418236944b", "fetched_at": "2026-08-29T09:51:28.381201+00:00", "kind": "site_page", "missing": false, "url": "https://docs.viewflow.io/overview/quick_start.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 95}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4740, "days_push": 24, "days_rel": 34, "gap_med": 5, "n_releases_24m": 4}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}