252 lines
12 KiB
Markdown
252 lines
12 KiB
Markdown
<div align="center">
|
|
|
|
# <img alt="youlai-boot" height="32" valign="middle" src="./docs/images/logo/logo.png"> youlai-boot
|
|
|
|
**Enterprise-grade permission management backend based on Spring Boot**
|
|
|
|
[](https://spring.io/projects/spring-boot)
|
|
[](https://openjdk.org/)
|
|
[](LICENSE)
|
|
[](https://gitee.com/youlaiorg/youlai-boot/stargazers)
|
|
[](https://github.com/youlaitech/youlai-boot)
|
|
[](https://gitcode.com/youlai/youlai-boot/stargazers)
|
|
|
|
</div>
|
|
|
|
<p align="center"><img src="./docs/images/rainbow.png" alt="rainbow"></p>
|
|
|
|
<div align="center">
|
|
|
|
[](https://vue.youlai.tech)
|
|
[](https://app.youlai.tech)
|
|
[](https://www.youlai.tech/docs/server/spring-boot/)
|
|
[](./README.md)
|
|
|
|
</div>
|
|
|
|
## 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 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 (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**
|
|
|
|
<table align="center">
|
|
<tr>
|
|
<td><img alt="PC Preview 1" width="400" src="./docs/images/preview/pc-01.png"></td>
|
|
<td><img alt="PC Preview 2" width="400" src="./docs/images/preview/pc-02.png"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img alt="PC Preview 3" width="400" src="./docs/images/preview/pc-03.png"></td>
|
|
<td><img alt="PC Preview 4" width="400" src="./docs/images/preview/pc-04.png"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img alt="PC Preview 5" width="400" src="./docs/images/preview/pc-05.png"></td>
|
|
<td><img alt="PC Preview 6" width="400" src="./docs/images/preview/pc-06.png"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
**Mobile**
|
|
|
|
<table align="center">
|
|
<tr>
|
|
<td><img alt="App Preview 1" width="200" src="./docs/images/preview/app-01.png"></td>
|
|
<td><img alt="App Preview 2" width="200" src="./docs/images/preview/app-02.png"></td>
|
|
<td><img alt="App Preview 3" width="200" src="./docs/images/preview/app-03.png"></td>
|
|
<td><img alt="App Preview 4" width="200" src="./docs/images/preview/app-04.png"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
## 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
|
|
```
|
|
|
|
2. Import the database:
|
|
|
|
```bash
|
|
# Base schema (required)
|
|
sql/youlai-admin.sql
|
|
|
|
# Optional extensions: safe to skip, run after the base schema
|
|
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):
|
|
|
|
```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`.
|
|
|
|
**Option 2: Command line**
|
|
|
|
```bash
|
|
mvn spring-boot:run
|
|
```
|
|
|
|
Once started, visit <http://localhost:8000/doc.html>. If the API docs open, the backend is running properly.
|
|
|
|
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 <http://localhost:3000>, 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
|
|
│ │ ├── 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/MyBatis/API docs/CORS/scheduling etc.)
|
|
│ ├── framework/ # Infrastructure layer
|
|
│ │ ├── mybatis/ # MyBatis-Plus config
|
|
│ │ ├── 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 (RustFS/Alibaba Cloud OSS/local)
|
|
│ │ ├── mail/ # Email service
|
|
│ │ ├── sms/ # SMS service
|
|
│ │ └── sse/ # SSE push
|
|
│ └── 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 | 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.
|
|
|
|
**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 | ✅️ |
|
|
|
|
## Optional Extensions
|
|
|
|
**Workflow (disabled by default)**
|
|
|
|
Two steps to enable:
|
|
|
|
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).
|
|
|
|
2. Enable it in `application-{profile}.yml`:
|
|
|
|
```yaml
|
|
workflow:
|
|
enabled: true
|
|
```
|
|
|
|
The Flowable engine switches (process / idm / eventregistry) follow `workflow.enabled` via placeholders in the same `application-{profile}.yml`, no extra maintenance needed.
|
|
|
|
**Multi-tenant**
|
|
|
|
For tenant isolation and tenant configuration, use the standalone repo [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant).
|
|
|
|
## 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).
|
|
|
|
<table align="center">
|
|
<tr>
|
|
<td align="center">
|
|
<img src="./docs/images/qrcode/wechat-official.jpg" height="180" alt="Official WeChat Account"><br>
|
|
<sub>Official WeChat Account</sub>
|
|
</td>
|
|
<td> </td>
|
|
<td align="center">
|
|
<img src="./docs/images/qrcode/wechat-mp.jpg" height="180" alt="Mini Program"><br>
|
|
<sub>Mini Program</sub>
|
|
</td>
|
|
<td> </td>
|
|
<td align="center">
|
|
<img src="./docs/images/qrcode/wechat-personal.png" height="180" alt="Add author on WeChat"><br>
|
|
<sub>Add author on WeChat</sub>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p align="center"><em>Technical discussion · Feedback · Business cooperation</em></p>
|