From 32f8b9c1950a6eaccbc2fe914fda19cca8fe73f2 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Tue, 8 Sep 2026 17:02:57 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=A7=BB=E9=99=A4=20README=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E6=BC=94=E7=A4=BA=E5=BC=80=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=8F=E8=BF=B0=E5=B9=B6=E9=87=8D=E8=AF=91?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=8B=B1=E6=96=87=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 312 +++++++++++++++++---------------------------------- README.md | 2 - 2 files changed, 100 insertions(+), 214 deletions(-) diff --git a/README.en.md b/README.en.md index 1d6bcdcc..bb45f787 100644 --- a/README.en.md +++ b/README.en.md @@ -1,363 +1,251 @@
- - -# youlai-boot youlai-boot - - +# youlai-boot youlai-boot **Enterprise-grade permission management backend based on Spring Boot** - - [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-4.0.5-6DB33F?logo=spring-boot)](https://spring.io/projects/spring-boot) - [![JDK](https://img.shields.io/badge/JDK-17%2B-007396?logo=openjdk)](https://openjdk.org/) - [![License](https://img.shields.io/badge/License-Apache%202.0-blue?logo=apache)](LICENSE) - [![Gitee Star](https://gitee.com/youlaiorg/youlai-boot/badge/star.svg)](https://gitee.com/youlaiorg/youlai-boot/stargazers) - [![GitHub Star](https://img.shields.io/github/stars/youlaitech/youlai-boot?style=social)](https://github.com/youlaitech/youlai-boot) - [![GitCode Star](https://gitcode.com/youlai/youlai-boot/star/badge.svg)](https://gitcode.com/youlai/youlai-boot/stargazers) - -
- - -![](./docs/images/rainbow.png "rainbow.png") - - +

rainbow

- - -[![Live Preview](https://img.shields.io/badge/Live%20Preview-2D8CF0?style=for-the-badge&logo=google-chrome&logoColor=white)](https://vue.youlai.tech) - -[![Mobile Preview](https://img.shields.io/badge/Mobile%20Preview-19BE6B?style=for-the-badge&logo=android&logoColor=white)](https://app.youlai.tech) - -[![Documentation](https://img.shields.io/badge/Documentation-8B5CF6?style=for-the-badge&logo=gitbook&logoColor=white)](https://www.youlai.tech/docs/server/spring-boot/) - -[![简体中文](https://img.shields.io/badge/简体中文-00B4D8?style=for-the-badge&logo=google-translate&logoColor=white)](./README.md) - - +[![Live Preview](https://img.shields.io/badge/Live%20Preview-2D8CF0?style=for-the-badge\&logo=google-chrome\&logoColor=white)](https://vue.youlai.tech) +[![Mobile Preview](https://img.shields.io/badge/Mobile%20Preview-19BE6B?style=for-the-badge\&logo=android\&logoColor=white)](https://app.youlai.tech) +[![Documentation](https://img.shields.io/badge/Documentation-8B5CF6?style=for-the-badge\&logo=gitbook\&logoColor=white)](https://www.youlai.tech/docs/server/spring-boot/) +[![简体中文](https://img.shields.io/badge/简体中文-00B4D8?style=for-the-badge\&logo=google-translate\&logoColor=white)](./README.md)
- - ## Introduction - - **youlai-boot** is an enterprise-grade permission management backend built on Spring Boot. It ships with the frontend [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) and the mobile app [youlai-app](https://gitee.com/youlaiorg/youlai-app), and is one of **7 language implementations** (Java / Node.js / Go / Python / PHP / C# / Rust) that share the same API specification and database schema. It is suitable for learning, reference, and secondary development of enterprise admin systems. - - ## Core Features - - -- 🔐 **Security** — Spring Security + JWT/Redis dual-session model, token renewal, multi-device mutual exclusion +- 🔐 **Security** — Spring Security + JWT/Redis dual-session token model, token renewal, multi-device mutual exclusion - 🛡️ **Fine-grained permissions** — 5-level RBAC: data → menu → button → API → field - ⚡ **Code generator** — one-click generation of full-stack CRUD code -- 📦 **Complete modules** — users, roles, menus, departments, dictionaries, files, scheduled tasks, message center, operation logs +- 📦 **Complete modules** — users, roles, menus, departments, dictionaries, files (OSS/RustFS/local), scheduled tasks, message center, operation logs + +- 🔀 **Workflow** — Flowable approval flows: online BPMN design, conditional gateways, role-based approval, rejection & rollback - 🌐 **Multi-tenant SaaS** — data isolation + tenant config, with a standalone [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant) edition - 🔌 **Real-time communication** — SSE push: online user count, dictionary sync, notification broadcast - - ## System Preview - - **PC** - - - - - - - - - - - - - - -
PC Preview 1PC Preview 2
PC Preview 3PC Preview 4
PC Preview 5PC Preview 6
- - **Mobile** - - - - - - - - -
App Preview 1App Preview 2App Preview 3App Preview 4
- - ## Quick Start - - **Requirements**: JDK 17+ · MySQL 8.0+ · Redis 6.0+ +1. Clone the project: + ```bash + git clone https://gitee.com/youlaiorg/youlai-boot.git + ``` -1. Clone: `git clone https://gitee.com/youlaiorg/youlai-boot.git` +2. Import the database: -2. Import database: ```bash # Base schema (required) sql/youlai-admin.sql # Optional extensions: safe to skip, run after the base schema - sql/extensions/form.sql # Dynamic Form + sql/extensions/dynamic-form.sql # Dynamic Form + sql/extensions/workflow.sql # Workflow (Flowable demo processes & demo accounts, not engine tables) ``` -3. Adjust config (optional, a read-only online data source is configured by default): `src/main/resources/application-dev.yml` +3. Adjust config (optional, a read-only online data source is configured by default): -4. Start and visit http://localhost:8000/doc.html + ```bash + src/main/resources/application-dev.yml + ``` +4. Start the service: + **Option 1: Run in IDEA (recommended)** + Open the project in IDEA, wait for Maven dependencies to download, then run the application class `YouLaiBootApplication`. -Default credentials: `admin` / `123456` + **Option 2: Command line** + ```bash + mvn spring-boot:run + ``` + Once started, visit . If the API docs open, the backend is running properly. -Detailed guide: https://www.youlai.tech/docs/server/spring-boot/quick-start.html - - - -## Tech Stack - - - -| Tech | Version | Description | - -|:-----|:--------|:------------| - -| Spring Boot | 4.0.5 | Core framework | - -| Spring Security | 6.x | Auth & authorization | - -| MyBatis-Plus | 3.5.15 | ORM | - -| Druid | 1.2.24 | Connection pool | - -| Redis + Redisson | 6.0+ / 4.1.0 | Cache · Session · Distributed lock | - -| Caffeine | 2.9.3 | Local cache | - -| XXL-Job | 3.2.0 | Distributed scheduled tasks | - -| Knife4j | 4.5.0 | API docs | - -| MapStruct | 1.6.3 | Object mapping | - -| MinIO | 8.5.10 | Object storage | - - +5. Start the frontend (optional): + For a visual admin UI, start the companion frontend [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin), visit , and log in with `admin` / `123456`. +> For more details, see the official docs: [Quick Start](https://www.youlai.tech/docs/server/spring-boot/quick-start.html) · [Deployment Guide](https://www.youlai.tech/docs/server/spring-boot/deploy.html) ## Directory Structure - - -``` - +``` youlai-boot/ - ├── docs/ # Docs and image assets - ├── sql/ # Database init scripts - ├── src/ # Source code - -│ ├── auth/ # Auth module (login/logout/token/captcha) - +│ ├── auth/ # Auth module +│ │ ├── password/ # Username/password login (with captcha) +│ │ ├── sms/ # SMS verification code login +│ │ ├── qrcode/ # QR code login +│ │ ├── wxma/ # WeChat Mini Program login +│ │ └── session/ # Session management (logout / token renewal) │ ├── codegen/ # Code generator - │ ├── common/ # Common module (constants/enums/exceptions/response/utils) - -│ ├── config/ # Configuration (Security/Redis/Captcha/OSS/Email etc.) - +│ ├── config/ # Configuration (Security/Redis/MyBatis/API docs/CORS/scheduling etc.) │ ├── framework/ # Infrastructure layer - │ │ ├── mybatis/ # MyBatis-Plus config - -│ │ ├── security/ # Spring Security (filters/token/utils) - +│ │ ├── security/ # Spring Security +│ │ │ ├── config/ # Security config and properties +│ │ │ ├── filter/ # Token authentication filter +│ │ │ ├── handler/ # Authentication / authorization failure handlers +│ │ │ ├── model/ # Security model (SecurityUser / token / data scope) +│ │ │ ├── port/ # Auth & permission ports (implemented by system) +│ │ │ ├── service/ # User details and permission service +│ │ │ ├── token/ # Token management (JWT / Redis dual mode) +│ │ │ └── util/ # Security utilities │ │ └── web/ # Web layer (global exception/CORS/rate limit) - +│ ├── module/ # Business extension modules +│ │ ├── form/ # Dynamic Form +│ │ └── workflow/ # Workflow │ ├── support/ # Capability services - -│ │ ├── file/ # File storage (MinIO/Alibaba Cloud OSS/local) - +│ │ ├── file/ # File storage (RustFS/Alibaba Cloud OSS/local) │ │ ├── mail/ # Email service - │ │ ├── sms/ # SMS service - │ │ └── sse/ # SSE push - -│ └── system/ # Business (user/role/menu/dept/dict etc.) - -├── docker-compose.yml # One-click middleware orchestration (MySQL/Redis/MinIO/Xxl-Job) - +│ └── system/ # System business (user/role/menu/dept/dict etc.) +├── docker-compose.yml # One-click middleware orchestration (MySQL/Redis/RustFS/Xxl-Job) └── pom.xml # Maven dependency management - -``` - - +``` ## Ecosystem - - **Frontend** - - -| Project | Stack | Description | - -|:-----|:------|:------------| - -| [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) | Vue 3 + Element Plus | PC admin frontend (recommended) | - -| [youlai-app](https://gitee.com/youlaiorg/youlai-app) | Vue 3 + UniApp | Mobile App | - - +| Project | Stack | Description | Status | +|:-----|:------|:------------|:---| +| [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) | Vue 3 + Element Plus | PC admin frontend (recommended) | ✅️ | +| [youlai-app](https://gitee.com/youlaiorg/youlai-app) | Vue 3 + UniApp | Mobile App | ✅️ | **Backend** +| Project | Stack | Description | Status | +|:-----|:------|:------------|:---| +| [youlai-boot](https://gitee.com/youlaiorg/youlai-boot) | Spring Boot + MyBatis-Plus | Java (recommended) | ✅️ | +| [youlai-nest](https://gitee.com/youlaiorg/youlai-nest) | NestJS + TypeORM | Node.js | ✅️ | +| [youlai-gin](https://gitee.com/youlaiorg/youlai-gin) | Go + Gorm | Go | ✅️ | +| [youlai-django](https://gitee.com/youlaiorg/youlai-django) | Django + DRF | Python | ✅️ | +| [youlai-fastapi](https://gitee.com/youlaiorg/youlai-fastapi) | FastAPI + SQLAlchemy | Python | ✅️ | +| [youlai-laravel](https://gitee.com/youlaiorg/youlai-laravel) | Laravel + Eloquent | PHP | ✅️ | +| [youlai-think](https://gitee.com/youlaiorg/youlai-think) | ThinkPHP + ThinkORM | PHP | ✅️ | +| [youlai-aspnet](https://gitee.com/youlaiorg/youlai-aspnet) | ASP.NET Core + EF Core | C# | ✅️ | +| [youlai-axum](https://gitee.com/youlaiorg/youlai-axum) | Axum + SeaORM | Rust | ✅️ | +> The nine backends share the same **RESTful API specification** and **database schema**, so the frontend can switch seamlessly. -| Project | Stack | Description | -| [youlai-boot](https://gitee.com/youlaiorg/youlai-boot) | Spring Boot + MyBatis-Plus | Java (recommended) | -| [youlai-nest](https://gitee.com/youlaiorg/youlai-nest) | NestJS + TypeORM | Node.js | -| [youlai-gin](https://gitee.com/youlaiorg/youlai-gin) | Go + Gorm | Go | -| [youlai-django](https://gitee.com/youlaiorg/youlai-django) | Django + DRF | Python | -| [youlai-fastapi](https://gitee.com/youlaiorg/youlai-fastapi) | FastAPI + SQLAlchemy | Python | -| [youlai-think](https://gitee.com/youlaiorg/youlai-think) | ThinkPHP + ThinkORM | PHP | -| [youlai-aspnet](https://gitee.com/youlaiorg/youlai-aspnet) | ASP.NET Core + EF Core | C# | -| [youlai-axum](https://gitee.com/youlaiorg/youlai-axum) | Axum + SeaORM | Rust | -> **youlai-boot** also provides the following variants and branches: [Multi-Tenant](https://gitee.com/youlaiorg/youlai-boot-tenant) · [MyBatis-Flex](https://gitee.com/youlaiorg/youlai-boot-flex) · [Spring Boot 3](https://gitee.com/youlaiorg/youlai-boot/tree/spring-boot-3) · [PostgreSQL](https://gitee.com/youlaiorg/youlai-boot/tree/db-pg) · [Multi-Module](https://gitee.com/youlaiorg/youlai-boot/tree/multi-module) +**Derived Editions** -> +| Project | Based on | Type | Description | Status | +|:-----|:-----|:---|:------------|:---| +| [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant) | youlai-boot | Standalone repo | Multi-tenant SaaS with tenant isolation & config | ✅️ | +| [youlai-boot-flex](https://gitee.com/youlaiorg/youlai-boot-flex) | youlai-boot | Standalone repo | Built on MyBatis-Flex | ✅️ | +| [youlai-boot (db-pg)](https://gitee.com/youlaiorg/youlai-boot/tree/db-pg) | youlai-boot | Branch | PostgreSQL database branch | ✅️ | +| [youlai-boot (multi-module)](https://gitee.com/youlaiorg/youlai-boot/tree/multi-module) | youlai-boot | Branch | Multi-module project split | ✅️ | +| [youlai-boot (spring-boot-3)](https://gitee.com/youlaiorg/youlai-boot/tree/spring-boot-3) | youlai-boot | Branch | Spring Boot 3 compatible branch | ✅️ | +| [youlai-nest (multi-tenant)](https://gitee.com/youlaiorg/youlai-nest/tree/multi-tenant) | youlai-nest | Branch | Multi-tenant SaaS with tenant isolation & config | ✅️ | -> The eight backends share the same **RESTful API specification** and **database schema**, so the frontend can switch seamlessly. +## Optional Extensions +**Workflow (disabled by default)** +Two steps to enable: -## Documentation +1. Import the demo data (demo processes & demo accounts): + ```bash + sql/extensions/workflow.sql + ``` + The ACT_* engine tables do not need to be imported — Flowable creates them automatically on startup (existing tables are left untouched). -| Resource | Link | +2. Enable it in `application-{profile}.yml`: -|:-----|:-----| + ```yaml + workflow: + enabled: true + ``` -| 📖 Full docs site | [www.youlai.tech](https://www.youlai.tech/) | + The Flowable engine switches (process / idm / eventregistry) follow `workflow.enabled` via placeholders in the same `application-{profile}.yml`, no extra maintenance needed. -| 🖥️ PC live preview | [vue.youlai.tech](https://vue.youlai.tech) | +**Multi-tenant** -| 📱 Mobile live preview | [app.youlai.tech](https://app.youlai.tech) | +For tenant isolation and tenant configuration, use the standalone repo [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant). -| 🔗 Apifox API docs | [apifox.com](https://www.apifox.cn/apidoc/shared-195e783f-4d85-4235-a038-eec696de4ea5) | - -| 🔗 Local API docs | [localhost:8000/doc.html](http://localhost:8000/doc.html) | - - - -## License - - - -Released under the [Apache License 2.0](LICENSE); free for commercial use. - - - ---- +## License & Support +This project is open-sourced under the [Apache License 2.0](LICENSE) and free for commercial use. Feel free to submit [issues](https://gitee.com/youlaiorg/youlai-boot/issues) or feedback, and pull requests are always welcome. +For technical support, business cooperation, secondary development, project customization, or private deployment, contact the author on WeChat (QR codes below). - - - - - - - -
- Official WeChat Account
- Official WeChat Account -
     - Mini Program
- Mini Program -
     - Add author on WeChat
- Add author on WeChat -
- -

Technical discussion · Feedback · Business cooperation

- diff --git a/README.md b/README.md index 35e635f6..a499c77b 100644 --- a/README.md +++ b/README.md @@ -220,8 +220,6 @@ youlai-boot/ Flowable 引擎开关(process / idm / eventregistry)在同一 `application-{profile}.yml` 中以占位符跟随 `workflow.enabled`,无需单独维护。 - 演示流程的启动自动部署由同文件 `workflow.demo.enabled` 控制(dev/youlai 默认 `true`、prod 默认 `false`,仅在模块开启后生效)。 - **多租户** 需要租户隔离与租户配置,使用独立仓库 [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant)。