# JRedmine
**Repository Path**: TangQingFeng/jredmine
## Basic Information
- **Project Name**: JRedmine
- **Description**: Java版本的Redmine
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-02-02
- **Last Updated**: 2025-12-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JRedmine
> 基于 Spring Boot 的 Java 版本 Redmine 项目管理系统
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)
[](LICENSE)
## 📖 项目简介
JRedmine 是一个使用 Spring Boot 构建的开源项目管理系统,旨在实现类似 Redmine 的功能。项目采用现代化的 Java 技术栈,提供完整的项目管理、任务跟踪、协作沟通等功能。
### 核心特性
- ✅ **项目管理**: 多项目支持、子项目、成员管理、项目仪表盘
- ✅ **任务管理**: 任务跟踪、状态管理、优先级、任务关联、工时记录
- ✅ **协作沟通**: Wiki、论坛、文档管理、文件管理
- ✅ **可视化**: 甘特图、路线图
- ✅ **时间跟踪**: 工时记录、报表分析
- ✅ **版本管理**: 里程碑管理、版本进度跟踪
- ✅ **代码集成**: Git/SVN 代码仓库集成
- ✅ **权限控制**: 角色与权限、LDAP 集成
- ✅ **通知系统**: 邮件通知、站内消息
- ✅ **扩展能力**: REST API、插件系统
### 项目状态
🚧 **开发中** - 项目目前处于框架搭建阶段,核心功能正在开发中。
**当前进度**:
- ✅ 项目框架搭建完成
- ✅ 数据库结构设计完成
- ✅ 用户注册/登录基础功能
- 🚧 核心业务模块开发中
- ⏳ 功能模块完善中
## 🛠️ 技术栈
### 核心框架
| 技术 | 版本 | 说明 |
|------|------|------|
| **JDK** | 21 | LTS 版本,长期支持 |
| **Spring Boot** | 3.4.3 | 核心框架 |
| **Maven** | - | 项目构建工具 |
### 数据访问
| 技术 | 版本 | 说明 |
|------|------|------|
| **MyBatis Plus** | 3.5.7 | ORM 框架 |
| **Lambda QueryWrapper** | - | 类型安全查询 |
| **MySQL** | 8.0 | 主数据库 |
### 工具库
| 技术 | 版本 | 说明 |
|------|------|------|
| **MapStruct** | 1.6.3 | 对象映射 |
| **Lombok** | - | 代码简化 |
| **Bean Validation** | - | 数据验证 |
| **JWT (jjwt)** | 0.11.5 | Token 认证 |
### 计划添加
- ⏳ **Spring Security** - 安全框架(当前已注释,待启用)
- ⏳ **Redis** - 缓存和会话存储
- ⏳ **SpringDoc OpenAPI** - API 文档
- ⏳ **Spring Boot Actuator** - 监控和健康检查
> 📝 详细的技术栈分析和优化建议请查看 [技术栈分析与优化建议文档](./docs/技术栈分析与优化建议.md)
> 📝 JPA 到 MyBatis Plus 迁移说明请查看 [迁移说明文档](./docs/JPA到MyBatisPlus迁移说明.md)
## 📋 功能模块
### 核心业务模块
- [x] 用户管理 - 用户注册/登录、用户资料、用户组
- [ ] 权限管理 - 角色与权限、权限控制、LDAP 集成
- [ ] 项目管理 - 多项目、子项目、成员管理、仪表盘
- [ ] 任务管理 - 任务跟踪、状态、优先级、关联关系
- [ ] 时间跟踪 - 工时记录、报表分析
- [ ] 版本管理 - 里程碑、版本进度跟踪
### 协作沟通模块
- [ ] Wiki - 内置 Wiki、版本历史
- [ ] 论坛 - 项目讨论、主题管理
- [ ] 文档管理 - 文档存储、分类管理
- [ ] 文件管理 - 文件上传、版本控制
### 可视化模块
- [ ] 甘特图 - 任务时间线、依赖关系、路线图
- [ ] 日历视图 - 任务日历、里程碑日历(计划中)
### 集成与扩展模块
- [ ] 代码仓库集成 - Git/SVN 集成、代码浏览
- [ ] REST API - 系统集成(开发中)
- [ ] 插件系统 - 可扩展性、插件库
### 系统管理模块
- [ ] 系统设置 - 全局配置、邮件服务器、安全设置
- [ ] 活动流 - 项目活动流、用户活动流(计划中)
- [ ] 搜索功能 - 全文搜索、高级搜索(计划中)
- [ ] 统计分析 - 项目统计、工时统计、报表(计划中)
### 通知与通信模块
- [ ] 邮件通知 - 邮件提醒、站内消息、任务评论
- [ ] 多渠道通知 - 短信、微信、推送(可选)
### 其他功能
- [ ] 多语言支持 - 国际化
- [ ] 导入/导出 - CSV/Excel 导入导出(计划中)
- [ ] 审计日志 - 操作日志、变更历史(计划中)
> 📝 详细的功能模块分析请查看 [功能模块分析文档](./docs/README.md)
## 🚀 快速开始
### 环境要求
- JDK 21+
- Maven 3.6+
- MySQL 8.0+
- Redis(可选,计划中)
### 本地部署
#### 1. 克隆项目
```bash
git clone https://github.com/jredmine/JRedmine.git
cd JRedmine
```
#### 2. 数据库准备
1. 安装 MySQL 8.0,并创建数据库 `jredmine`
2. 导入数据库脚本:
```bash
mysql -u root -p jredmine < src/main/resources/data/jredmine.sql
```
#### 3. 配置文件
复制 `src/main/resources/application-dev.yml` 到 `application-local.yml` 并修改数据库配置:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/jredmine?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
# MyBatis Plus 配置
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.github.jredmine.entity
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: AUTO
```
#### 4. Maven 配置(可选)
配置 Maven 镜像为阿里云镜像,修改 `~/.m2/settings.xml`:
```xml
nexus-aliyun
central
Nexus aliyun
https://maven.aliyun.com/repository/public
```
#### 5. 编译构建
```bash
mvn clean compile
```
#### 6. 启动项目
```bash
mvn spring-boot:run
```
#### 7. 访问应用
- 应用地址: http://localhost:8088
- 测试接口: http://localhost:8088/index
### API 测试
#### 用户注册接口
```http
POST http://localhost:8088/api/users/register
Content-Type: application/json
{
"login": "testuser",
"password": "12345678",
"confirmPassword": "12345678",
"firstname": "Test",
"lastname": "User",
"email": "test@example.com",
"hideEmailFlag": false
}
```
### MyBatis Plus 使用示例
项目使用 MyBatis Plus 和 Lambda QueryWrapper 进行类型安全查询:
```java
// 类型安全查询示例
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getStatus, 1)
.like(User::getLogin, "admin")
.orderByDesc(User::getCreatedOn);
List users = userRepository.selectList(wrapper);
// 单条查询
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getLogin, "admin");
User user = userRepository.selectOne(queryWrapper);
```
> 📝 更多使用示例请查看 [JPA到MyBatisPlus迁移说明](./docs/JPA到MyBatisPlus迁移说明.md)
## 📚 项目文档
项目详细文档位于 `docs/` 目录:
- 📊 [功能模块分析报告](./docs/功能模块分析报告.md) - 完整的功能模块分析和评估
- 📋 [功能模块对比表](./docs/功能模块对比表.md) - XMind 与 README 的对比
- 🗄️ [数据库结构验证报告](./docs/数据库结构验证报告.md) - 数据库表结构验证
- ⚠️ [缺失功能模块清单](./docs/缺失功能模块清单.md) - 需要补充的功能模块
- 💡 [功能模块优化建议](./docs/功能模块优化建议.md) - 模块优化和实施建议
- 🔧 [技术栈分析与优化建议](./docs/技术栈分析与优化建议.md) - 技术栈分析和优化建议
- 🗄️ [ORM框架选择分析与建议](./docs/ORM框架选择分析与建议.md) - ORM 框架对比和选择建议
- 📝 [JPA到MyBatisPlus迁移说明](./docs/JPA到MyBatisPlus迁移说明.md) - 迁移文档和使用指南
> 查看 [文档导航](./docs/README.md) 获取完整的文档列表
## 👥 开发团队
- Lei Dong
- Dacheng Gao
- Feng Pan
## 🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📝 开发计划
### Phase 1 - MVP(最小可行产品)
- [ ] 用户管理
- [ ] 项目管理
- [ ] 任务管理
- [ ] 角色与权限
- [ ] 基础通知(邮件)
### Phase 2 - 核心功能
- [ ] 时间跟踪
- [ ] 版本管理
- [ ] Wiki
- [ ] 文档管理
- [ ] 甘特图
- [ ] 活动流
- [ ] 搜索功能
### Phase 3 - 增强功能
- [ ] 论坛
- [ ] 文件管理
- [ ] 代码仓库集成
- [ ] 统计分析
- [ ] 自定义字段
- [ ] 工作流管理
### Phase 4 - 高级功能
- [ ] 插件系统
- [ ] 多渠道通知
- [ ] 日历视图
- [ ] 导入/导出
- [ ] 审计日志
- [ ] REST API 完善
> 详细的开发计划请查看 [功能模块优化建议](./docs/功能模块优化建议.md)
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🔗 相关链接
- [Spring Boot 官方文档](https://spring.io/projects/spring-boot)
- [MyBatis Plus 官方文档](https://baomidou.com/)
- [Redmine 官方网站](https://www.redmine.org/)
- [项目 Issues](https://github.com/jredmine/JRedmine/issues)
## 📧 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 [Issue](https://github.com/jredmine/JRedmine/issues)
- 发送邮件至项目维护者
---
**⭐ 如果这个项目对你有帮助,请给个 Star!**