{"id":15019338,"url":"https://github.com/yiuman/citrus","last_synced_at":"2025-10-24T13:01:16.625Z","repository":{"id":40616784,"uuid":"253016300","full_name":"Yiuman/citrus","owner":"Yiuman","description":":rainbow:  低代码快速开发脚手架，灵活、高效，降低开发成本","archived":false,"fork":false,"pushed_at":"2024-05-29T13:05:18.000Z","size":1744,"stargazers_count":489,"open_issues_count":5,"forks_count":148,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-07-26T04:58:47.963Z","etag":null,"topics":["admin","citrus","crud","jwt","low-code","lowcode","mybatis-plus","rbac","rest-api","springboot","springboot2-x","springsecurity","vue","workflow"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yiuman.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}},"created_at":"2020-04-04T14:20:50.000Z","updated_at":"2025-06-20T10:21:45.000Z","dependencies_parsed_at":"2024-10-10T05:31:12.403Z","dependency_job_id":"caf778d0-63af-40ad-9255-3826a0349e63","html_url":"https://github.com/Yiuman/citrus","commit_stats":{"total_commits":303,"total_committers":7,"mean_commits":"43.285714285714285","dds":0.05610561056105612,"last_synced_commit":"05605ba1a23f4bca3a9fd0abc2ab5bf6a2c44abe"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/Yiuman/citrus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yiuman%2Fcitrus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yiuman%2Fcitrus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yiuman%2Fcitrus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yiuman%2Fcitrus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yiuman","download_url":"https://codeload.github.com/Yiuman/citrus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yiuman%2Fcitrus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280799418,"owners_count":26393089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"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":["admin","citrus","crud","jwt","low-code","lowcode","mybatis-plus","rbac","rest-api","springboot","springboot2-x","springsecurity","vue","workflow"],"created_at":"2024-09-24T19:53:21.434Z","updated_at":"2025-10-24T13:01:16.607Z","avatar_url":"https://github.com/Yiuman.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Yiuman/citrus\"\u003e\n   \u003cimg alt=\"citrus-logo\" src=\"./logo.png\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eCitrus: 低代码开发脚手架\u003c/h1\u003e\n\n\u003cp  align=\"center\"\u003e\n \u003ca href=\"https://github.com/Yiuman/citrus/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"code style\" src=\"https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"http://spring.io/projects/spring-boot\"\u003e\n    \u003cimg alt=\"springboot-2.5.2\" src=\"https://img.shields.io/badge/spring--boot-2.5.2-release.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"http://mp.baomidou.com\"\u003e\n    \u003cimg alt=\"mybatis-plus-3.4.3\" src=\"https://img.shields.io/badge/mybatis--plus-3.4.3-blue.svg\"\u003e\n  \u003c/a\u003e\n   \u003ca href=\"https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.github.yiuman%22%20AND%20a%3A%22citrus%22\"\u003e\n    \u003cimg alt=\"maven\" src=\"https://img.shields.io/maven-central/v/com.github.yiuman/citrus?style=flat\"\u003e\n\u003c/p\u003e\n\n### 项目简介\n\n:rainbow:  低代码快速开发脚手架\n\n前后端分离架构，基于SpringBoot2.x + SpringSecurity + JWT + Mybatis-plus + Activiti7\n\n灵活、高效，降低开发成本\n\n**前端仓库地址**：https://github.com/Yiuman/citrus-vuetify\n\n:smile:  [我是一个活生生的例子](http://42.192.95.146:8088/#/login)\n\n欢迎issues、PR~~  如果此项目对你有所帮助，麻烦动动小手给个小星星:star:\n\n### 项目特性\n\n1. 开箱即用，引入starter依赖后即可启动\n2. 高效开发，只需要定义实体与库表，入口继承基类的Controller，即可完成基础的增删改查操作\n3. 常用数据结构的封装与基础的CRUD实现（左右值预遍历树、普通树等）\n4. 统一的认证入口，方便的安全认证扩展，可实现多种方式的认证，且支持表单与接口\n5. 灵活的权限钩子，既可全局进行权限验证、亦可定义于类与方法，验证方式易与扩展\n6. 细粒度的RBAC权限控制，可自定义验证方式，支持数据范围注入\n7. 动态数据源+多数据源事务管理\n8. 封装activiti7工作流，多实例加签，任务跳转\n\n### 项目结构/模块设计及使用指南\n\n- `citrus-boot-starter` 项目自动配置相关\n- `citrus-main` 项目的运行入口（体验开箱即用的快感）\n- `citrus-security` 项目安全相关的代码，统一认证、验证码类型、鉴权、jwt等  [安全模块传送门](https://github.com/Yiuman/citrus/tree/master/doc/安全模块设计.md)\n- `citrus-support`\n  项目通用支持相关的代码，通用Service层、Controller层，工具类、缓存、异常、注入、数据结构、动态数据源及相关扩展 [通用CRUD指南](https://github.com/Yiuman/citrus/tree/master/doc/通用CRUD指南.md)\n  、[多数据源及事务](https://github.com/Yiuman/citrus/tree/master/doc/多数据源及事务.md)\n- `citrus-system` 项目系统设计的主要实现\n  包含用户、角色、权限、资源、菜单、数据范围等模块的实现与处理，数据范围注入也在这里 [权限数据范围设计](https://github.com/Yiuman/citrus/tree/master/doc/权限设计.md)\n- `citrus-workflow` 整合activiti7的工作流模块，实现多维度人员解析、加签、跳转功能  [acitivi模型设计器](http://42.192.95.146:18080/)\n- `citrus-workflow-impl` 系统模块与工作流模块结合的工作流相关实现\n\n### 如何使用\n\n#### 方式一\n\n1. springboot项目中引入最新的依赖 见readme顶部微章\n\n   ```xml\n   \u003cdependency\u003e\n     \u003cgroupId\u003ecom.github.yiuman\u003c/groupId\u003e\n     \u003cartifactId\u003ecitrus-boot-starter\u003c/artifactId\u003e\n     \u003cversion\u003e${latest}\u003c/version\u003e\n   \u003c/dependency\u003e\n   ```\n\n2. 下载 https://github.com/Yiuman/citrus/tree/master/sql  中的sql文件，创建你的数据并执行（多数据源请见多数据源及事务使用指南）\n\n3. 在`application.yml`中配置数据库及应用信息\n\n    ```yml\n    spring:\n      datasource:\n        driver-class-name: com.mysql.jdbc.Driver\n        url: jdbc:mysql://localhost:3306/citrus?zeroDateTimeBehavior=convertToNull\u0026characterEncoding=UTF-8\n        username: root\n        password: yiuman\n    server:\n      port: 8082\n    ```\n\n4. 启动项目\n\n#### 方式二\n\n1. 克隆项目 `git clone https://github.com/Yiuman/citrus.git`\n\n2. 自行修改项目配置与代码\n\n3. 启动项目\n\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiuman%2Fcitrus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyiuman%2Fcitrus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiuman%2Fcitrus/lists"}