{"id":13625680,"url":"https://github.com/blackholll/loonflow","last_synced_at":"2026-04-02T12:02:16.357Z","repository":{"id":39165935,"uuid":"120720556","full_name":"blackholll/loonflow","owner":"blackholll","description":"A Intelligent and Visual Process Automation System,  ticket, workflow","archived":false,"fork":false,"pushed_at":"2026-03-22T15:07:50.000Z","size":74629,"stargazers_count":2049,"open_issues_count":14,"forks_count":705,"subscribers_count":86,"default_branch":"master","last_synced_at":"2026-03-22T19:42:05.856Z","etag":null,"topics":["devops","django","python","ticket","workflow","workflow-engine"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blackholll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"Roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"patreon":"blackholllcn","custom":["https://github.com/blackholll/loonflow/blob/master/README_zh.md#%E6%AC%A2%E8%BF%8E%E6%8D%90%E5%8A%A9"]}},"created_at":"2018-02-08T06:26:53.000Z","updated_at":"2026-03-21T17:36:07.000Z","dependencies_parsed_at":"2023-02-19T17:15:56.189Z","dependency_job_id":"613b6010-6090-4399-bb59-fa4d703e3537","html_url":"https://github.com/blackholll/loonflow","commit_stats":{"total_commits":734,"total_committers":22,"mean_commits":33.36363636363637,"dds":0.0953678474114441,"last_synced_commit":"cd5173c6e2ac08be594bfa3f69bf3088fa5882ac"},"previous_names":[],"tags_count":90,"template":false,"template_full_name":null,"purl":"pkg:github/blackholll/loonflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackholll%2Floonflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackholll%2Floonflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackholll%2Floonflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackholll%2Floonflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blackholll","download_url":"https://codeload.github.com/blackholll/loonflow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blackholll%2Floonflow/sbom","scorecard":{"id":242151,"data":{"date":"2025-08-11","repo":{"name":"github.com/blackholll/loonflow","commit":"a0eaecf41719047e888752072a5f0ca1a79f205b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/image_build_base.yml:1","Warn: no topLevel permission defined: .github/workflows/image_build_task.yml:1","Warn: no topLevel permission defined: .github/workflows/image_build_web.yml:1","Warn: no topLevel permission defined: .github/workflows/unit_test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/image_build_task.yml:7"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/image_build_base.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_base.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_base.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_base.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_base.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_base.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_base.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_base.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_base.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_base.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/image_build_task.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_task.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_task.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_task.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_task.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_task.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_task.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_task.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_task.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_task.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/image_build_web.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_web.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_web.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_web.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_web.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/image_build_web.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/image_build_web.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/unit_test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_test.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/blackholll/loonflow/unit_test.yml/master?enable=pin","Warn: containerImage not pinned by hash: docker_compose_deploy/loonflow-base/Dockerfile:1: pin your Docker image by updating centos:7 to centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4","Warn: containerImage not pinned by hash: docker_compose_deploy/loonflow-task/Dockerfile:1: pin your Docker image by updating blackholll/loonflow-base:latest to blackholll/loonflow-base:latest@sha256:b86560e70602ab6d330d85afc36c7343314204b86677c706f9637c8490ea272f","Warn: containerImage not pinned by hash: docker_compose_deploy/loonflow-web/Dockerfile:1: pin your Docker image by updating blackholll/loonflow-base:latest to blackholll/loonflow-base:latest@sha256:b86560e70602ab6d330d85afc36c7343314204b86677c706f9637c8490ea272f","Warn: pipCommand not pinned by hash: docker_compose_deploy/loonflow-task/Dockerfile:9","Warn: pipCommand not pinned by hash: docker_compose_deploy/loonflow-web/Dockerfile:12","Warn: npmCommand not pinned by hash: docker_compose_deploy/loonflow-web/Dockerfile:22","Warn: pipCommand not pinned by hash: .github/workflows/unit_test.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/unit_test.yml:25","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  12 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 7 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T06:51:59.720Z","repository_id":39165935,"created_at":"2025-08-17T06:51:59.720Z","updated_at":"2025-08-17T06:51:59.720Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: 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":["devops","django","python","ticket","workflow","workflow-engine"],"created_at":"2024-08-01T21:01:59.434Z","updated_at":"2026-04-02T12:02:16.351Z","avatar_url":"https://github.com/blackholll.png","language":"TypeScript","funding_links":["https://patreon.com/blackholllcn","https://github.com/blackholll/loonflow/blob/master/README_zh.md#%E6%AC%A2%E8%BF%8E%E6%8D%90%E5%8A%A9"],"categories":["TypeScript"],"sub_categories":[],"readme":"# Loonflow 3.0 - Intelligent and Visual Process Automation System\nDedicated to providing enterprise-grade unified workflow solutions\n\n[![Python](https://img.shields.io/badge/Python-3.12-3776AB?logo=python\u0026logoColor=white)](https://www.python.org/)\n[![Django](https://img.shields.io/badge/Django-5.2-092E20?logo=django\u0026logoColor=white)](https://www.djangoproject.com/)\n[![React](https://img.shields.io/badge/React-18.x-61DAFB?logo=react\u0026logoColor=black)](https://reactjs.org/)\n[![MUI](https://img.shields.io/badge/MUI-5.x-007FFF?logo=mui\u0026logoColor=white)](https://mui.com/)\n[![License](https://img.shields.io/badge/license-AGPL%20v3-blue)](https://www.gnu.org/licenses/agpl-3.0)\n![star](https://atomgit.com/blackholll/loonflow/star/badge.svg)\n\n[English](./README.md) | [简体中文](./README_zh.md)\n\n# Loonflow 3.0 - A Fresh Start\n\nLoonflow is an open-source process automation platform developed based on Django. After multiple versions of iteration and refactoring, we proudly present Loonflow 3.0 - a version that achieves a qualitative leap in visualization, flexibility, and scalability.\n\nThe core of version 3.0 is \"making complex business processes simple and visual, making personalized customization needs within reach.\" Not only have we rebuilt the process and form designers, but we have also constructed a powerful extension framework, aiming to become the most core process engine in enterprise digital transformation.\n\n# Feature Demo\n[![Feature Demo new](https://img.youtube.com/vi/IpLePpajyfU/0.jpg)](https://www.youtube.com/watch?v=IpLePpajyfU)\n\n\n# Core Features\n\n## Revolutionary Visual Design\n- **Drag-and-Drop Process Designer**: No complex configuration needed. Complete complex business process modeling through intuitive drag-and-drop connections. Supports advanced nodes like conditional branches, parallel tasks, and hooks.\n- **Smart Form Designer**: Powerful visual form building tool with rich field types (text, numbers, dropdowns, personnel selection, attachments, etc.) and flexible layouts.\n- **Real-time Preview \u0026 Validation**: Real-time preview during process design with built-in process logic validation to prevent design errors early.\n- **Multi-Version Process Configuration**: You can configure multiple versions of processes and easily test and switch between versions.\n\n\n## Ultimate Flexibility \u0026 Extensibility\n- **Plugin Architecture**: We provide plugin extension capabilities for almost all key nodes (such as custom actions, permission validation, notification methods, etc.). Your unique business logic can be easily integrated like building blocks.\n- **Powerful API System**: Provides comprehensive and clear RESTful APIs for seamless integration with your customer service systems, CMDB, monitoring systems, CI/CD, OA, and other third-party systems.\n- **Highly Customizable Permission Model**: Supports fine-grained permission control based on roles, departments, or even specific business conditions to meet complex enterprise permission management needs.\n\n## Enterprise-Ready Features Out of the Box\n- **Multi-Type Ticket Support**: Easily manage various processes including IT operations, HR approvals, financial reimbursements, customer service, etc.\n- **Automation \u0026 Smart Routing**: Supports conditional routing based on form data, automatic assignee assignment, and intelligent ticket flow.\n- **Comprehensive Audit Logs**: Complete records of every operation from ticket creation to closure, meeting compliance and audit requirements.\n- **Authentication**: Supports Microsoft OIDC, Wecom QR scan login.\n- **Multi-Tenant Support (Optional)**: Provides data isolation capabilities for SaaS providers or large enterprise groups (requires additional authorization).\n\n# Installation \u0026 Deployment\n1. Download docker-compose related files\n```\nwget https://raw.githubusercontent.com/blackholll/loonflow/refs/heads/master/docker_compose_deploy/docker-compose.yml\nwget https://raw.githubusercontent.com/blackholll/loonflow/refs/heads/master/docker_compose_deploy/.env\n```\n2. Modify the .env file\nPlease modify at least the password section\n3. Start docker-compose\nNavigate to the directory containing docker-compose.yml and execute:\n```\ndocker-compose up -d\n```\n4. Access loonflow\nLogin to loonflow using the email and password you set in the .env file.\n\n# Project Roadmap\n[Roadmap](./Roadmap.md)\n\n# Deep Dive\n\n- **Complete Documentation** - Learn all the details about installation, configuration, usage, and development: https://loonflow.readthedocs.io\n- **Hook Development Guide** - Learn how to develop custom plugins for Loonflow.\n- **API Reference** - View complete API interface documentation. https://documenter.getpostman.com/view/15031929/2sB3WyJbap\n\n# 🤝 Contributing\n\nCommunity contributions are warmly welcome! Whether you're fixing typos, improving documentation, reporting bugs, or developing new features.\n\nPlease fork this repository first, then submit a Pull Request.\n\n# Getting Help\n\n- **GitHub Issues** - Submit bug reports and feature requests.\n- **Discussion Forum** [Discord](https://discord.gg/WuppaG638k).\n- **Commercial Support \u0026 Customization**: For enterprise-level deep customization, technical training, or deployment support needs, please contact me at [blackholll@163.com;blackholll.cn@gmail.com].\n\n# Acknowledgments\n\nThanks to all contributors who have contributed code, submitted issues, and helped improve documentation for Loonflow.\n\nIf Loonflow has been helpful to you, please give us a ⭐️ Star for support!\n\n# Welcome Donations\nYour support is my greatest motivation. Click the \"sponsor\" button on the GitHub project homepage to sponsor. If your are from China or you have alipay account. go to [简体中文](./README_zh.md), check alipay method to donate.\n\n\n# License \u0026 Legal Notice\nThis project is open source under the AGPLv3 license. You are free to view, modify, and distribute the code, but please note:\n\nIf you provide this project as a SaaS service to the public, according to AGPLv3, you must open source all your modifications.\n\nIf you want to use this project for SaaS services without open-sourcing modifications, or if you need to use its multi-tenant functionality within your enterprise, you need to obtain a commercial license from us. Please contact [blackholll@163.com;blackholll.cn@gmail.com].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackholll%2Floonflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblackholll%2Floonflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackholll%2Floonflow/lists"}