# rocks
**Repository Path**: smartunity/rocks
## Basic Information
- **Project Name**: rocks
- **Description**: Spring Boot 4 + PostgreSQL + Flowable 的可拆分 Starter 平台:DB/缓存/日志/监控/JWT/RBAC/工作流,前后端分离,Docker 开箱即用。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-23
- **Last Updated**: 2026-06-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Rocks Platform
Rocks 是一套**前后端分离**的企业级 Java 开发底座:后端以 Spring Boot Starter 按需组合(Core / Auth / Flow),前端为 Vue 3 管理端模板。本仓库包含完整 Demo(RBAC + 请假审批流程),业务示例与底座源码分离,便于二次开发或仅引入 Starter 构建新项目。
---
## 特性
- **模块化 Starter**:`rocks-spring-boot-starter`(核心)、`-auth`、`-flow` 按需引入
- **核心能力**:MyBatis-Plus、多 Schema 租户、Caffeine/Redis 缓存、操作日志(`@RockLog`)、JVM/缓存/DB 监控
- **权限体系**:JWT + Spring Security,用户 / 角色 / 菜单 RBAC
- **工作流**:Flowable 封装,流程部署、任务中心、BPMN 设计
- **开箱 Demo**:Docker 一键启动(PostgreSQL + Redis + 后端 + 前端)
- **演示业务**:请假审批(`rocks-samples-leave`,不随 Starter 发布)
---
## 技术栈
| 层级 | 技术 |
|------|------|
| 后端 | Java 21、Spring Boot 4.0、MyBatis-Plus、Flowable |
| 数据 | PostgreSQL 16、Redis |
| 前端 | Vue 3、Vite、Element Plus、Pinia、BPMN.js |
| 构建 | Maven 多模块、Docker Compose |
---
## 快速开始(Docker)
**前置条件**:Docker Desktop、端口 **15433 / 16379 / 8924 / 8925** 未被占用。
```bash
# 项目根目录
docker compose up -d --build
```
首次构建需下载 Maven 依赖,约 5–15 分钟。
| 地址 | 说明 |
|------|------|
| http://localhost:8924 | 前端 |
| http://localhost:8925/swagger-ui | API 文档 |
| http://localhost:8925/actuator/health | 健康检查 |
**默认账号**(密码均为 `123456`):
| 用户名 | 用途 |
|--------|------|
| admin | 超级管理员 / 主管审批 |
| user | 普通用户 / 请假发起人 |
| manager | 总经理审批(>3 天) |
| hr | 人事备案 |
**演示路径**:`user` 发起请假 → `admin` 任务中心审批 →(可选)`manager` → `hr` → 系统监控查看操作日志与 JVM 监控。
更多细节见 [doc/QUICKSTART.md](doc/QUICKSTART.md)。
```bash
# 查看后端日志
docker compose logs -f backend
# 停止
docker compose down
# 停止并重建数据库
docker compose down -v
```
---
## 本地开发
**后端**(需本地 PostgreSQL,默认 `localhost:15432`):
```powershell
.\start-backend.ps1
```
**前端**:
```bash
cd rocks-ui
npm install
npm run dev
```
**集成测试**:
```bash
mvn test -pl rocks-flow,rocks-log,rocks-auth -am
```
**Starter 组合验证**(Testcontainers,需 Docker + JDK 21):
```powershell
.\scripts\verify-starters.ps1
```
详见 [rocks-starter-verify/README.md](rocks-starter-verify/README.md)。
---
## 仓库结构
| 模块 | 说明 |
|------|------|
| `rocks-spring-boot-starter` | 核心 Starter(DB、缓存、日志、监控) |
| `rocks-spring-boot-starter-auth` | 认证与 RBAC |
| `rocks-spring-boot-starter-flow` | 工作流 |
| `rocks-starter` | 全家桶(core + auth + flow,Demo 兼容) |
| `rocks-dependencies` | BOM,统一依赖版本 |
| `rocks-app` | 演示后端应用 |
| `rocks-ui` | 演示前端 |
| `rocks-samples-leave` | 请假 Demo 业务(不发布为 Maven 制品) |
| `rocks-starter-verify` | Starter 组合集成测试 |
| `doc/` | 快速启动、SQL 脚本、架构与发布规划 |
数据库初始化脚本位于 `doc/sql/`(Demo 数据在 `doc/sql/demo/`),说明见 [doc/sql/README.md](doc/sql/README.md)。
---
## 在新项目中使用 Starter
### 从源码构建(当前推荐)
```bash
# 项目根目录
mvn clean install -DskipTests
```
在新项目 `pom.xml` 中引入 BOM 与所需 Starter:
```xml
com.rocks
rocks-dependencies
1.0.0-SNAPSHOT
pom
import
com.rocks
rocks-spring-boot-starter
```
执行 `doc/sql/` 下主库脚本(不含 `demo/` 目录则为纯底座环境)。
### 推荐组合
| 场景 | 后端依赖 |
|------|----------|
| 纯 API + 日志 + 监控 | `rocks-spring-boot-starter` |
| 管理后台(用户/角色/菜单) | core + `rocks-spring-boot-starter-auth` |
| 审批 / 任务中心 | core + auth + `rocks-spring-boot-starter-flow` |
| 本仓库 Demo | `rocks-starter` + `rocks-samples-leave` |
> 引入 flow 时需配置 `rocks.flow.enabled=true`。生产环境建议使用 **core + auth + flow**,不要单独 core + flow(流程 API 无 JWT 保护)。
完整发布规划与 Starter 边界见 [doc/Rocks_starter-minimal-publish.md](doc/Rocks_starter-minimal-publish.md)。
---
## 环境要求
| 工具 | 版本 |
|------|------|
| JDK | 21 |
| Maven | 3.9+ |
| Node.js | 18+(前端开发) |
| Docker | 24+(Demo / 集成测试) |
---
## 文档
- [快速启动(Docker)](doc/QUICKSTART.md)
- [SQL 初始化说明](doc/sql/README.md)
- [Starter 发布与模块规划](doc/Rocks_starter-minimal-publish.md)
- [Starter 组合验证](rocks-starter-verify/README.md)
---
## 版本
当前版本:`1.0.0-SNAPSHOT`(v1.0-standalone:Starter 已拆分,Docker Demo 可用)
---
## License
本项目采用 [Apache License 2.0](LICENSE) 开源协议。