885fad6c641f6a73e1fb71b2345df3b28b5f0828

Features: - Complete project management system with Epic/Story/Task hierarchy - Vue.js 3 + Element Plus frontend with kanban board - Go backend with Gin framework and GORM - OAuth2 integration with Gitea - Docker containerization with MySQL - RESTful API for project, task, and user management - JWT authentication and authorization - Responsive web interface with dashboard
Gitea Project Management
一个与 Gitea 深度集成的项目管理系统,支持需求管理、任务追踪、迭代规划和研发协作。
功能特性
核心功能
- 需求管理: 支持 Epic/Story/Task 三级需求分解
- 项目管理: 项目创建、成员管理、权限控制
- 任务看板: 可视化任务状态管理,支持拖拽操作
- 迭代规划: Sprint 管理、燃尽图、速度跟踪
- 时间跟踪: 工时记录和统计分析
Gitea 集成
- OAuth 登录: 使用 Gitea 账号直接登录
- 仓库关联: 任务与 Git 分支、提交、PR 自动关联
- Webhook 支持: 监听 Gitea 事件自动更新任务状态
- 权限同步: 复用 Gitea 的用户和组织权限体系
协作功能
- 评论系统: 任务讨论和进度更新
- 标签管理: 自定义标签分类管理
- 通知提醒: 任务状态变更通知
- 权限控制: 细粒度的项目和功能权限
技术架构
后端技术栈
- Go 1.21+: 主要开发语言
- Gin: Web 框架
- GORM: ORM 数据库操作
- MySQL: 主数据库
- JWT: 身份认证
- OAuth2: Gitea 集成认证
前端技术栈
- Vue 3: 前端框架
- Element Plus: UI 组件库
- Axios: HTTP 客户端
部署架构
- Docker: 容器化部署
- Docker Compose: 本地开发环境
- MySQL: 数据持久化
快速开始
环境要求
- Go 1.21+
- MySQL 5.7+
- Node.js 16+ (如需修改前端)
- Docker & Docker Compose (可选)
配置 Gitea OAuth
-
在 Gitea 中创建 OAuth 应用:
- 进入 Gitea 管理后台 → 应用 → OAuth2 应用
- 创建新应用,设置回调 URL:
http://localhost:8080/api/v1/auth/callback
- 记录 Client ID 和 Client Secret
-
修改配置文件
config/config.yaml
:
gitea:
base_url: "http://your-gitea-url"
client_id: "your-client-id"
client_secret: "your-client-secret"
redirect_url: "http://localhost:8080/api/v1/auth/callback"
使用 Docker Compose 部署
# 克隆项目
git clone <project-url>
cd giteapm
# 修改配置文件
cp config/config.yaml.example config/config.yaml
# 编辑 config/config.yaml 设置 Gitea 连接信息
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f giteapm
手动部署
# 1. 安装依赖
make install
# 2. 创建数据库
mysql -u root -p -e "CREATE DATABASE giteapm CHARACTER SET utf8mb4;"
# 3. 导入数据库结构
mysql -u root -p giteapm < schema.sql
# 4. 修改配置文件
cp config/config.yaml.example config/config.yaml
# 编辑数据库连接和 Gitea 配置
# 5. 构建并运行
make build
make run
# 或者直接运行开发模式
make dev
访问应用
打开浏览器访问: http://localhost:8080
点击"使用 Gitea 登录"按钮,会跳转到 Gitea 进行 OAuth 认证。
数据库设计
核心实体关系
projects (项目)
├── epics (史诗需求)
│ └── stories (用户故事)
│ └── tasks (任务)
├── sprints (迭代)
├── project_members (项目成员)
└── webhook_configs (Webhook配置)
tasks (任务)
├── gitea_relations (Git关联)
├── time_logs (工时记录)
├── comments (评论)
└── entity_tags (标签)
主要数据表
users
: 用户信息(与 Gitea 用户同步)projects
: 项目信息epics
: 大需求/史诗stories
: 用户故事tasks
: 具体任务gitea_relations
: 任务与 Git 对象的关联关系sprints
: 迭代/冲刺time_logs
: 工时记录comments
: 评论系统tags
&entity_tags
: 标签系统
API 文档
认证接口
GET /api/v1/auth/login
- 获取 Gitea OAuth 登录链接GET /api/v1/auth/callback
- OAuth 回调处理POST /api/v1/auth/logout
- 退出登录
项目管理
GET /api/v1/projects
- 获取项目列表POST /api/v1/projects
- 创建项目GET /api/v1/projects/:id
- 获取项目详情PUT /api/v1/projects/:id
- 更新项目DELETE /api/v1/projects/:id
- 删除项目
任务管理
GET /api/v1/tasks
- 获取任务列表POST /api/v1/tasks
- 创建任务GET /api/v1/tasks/:id
- 获取任务详情PUT /api/v1/tasks/:id
- 更新任务POST /api/v1/tasks/:id/time-logs
- 记录工时POST /api/v1/tasks/:id/gitea-relations
- 关联 Git 对象
详细 API 文档请参考: API.md
开发指南
项目结构
giteapm/
├── cmd/ # 应用入口
├── config/ # 配置文件
├── internal/ # 内部代码
│ ├── api/ # API 路由和处理器
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ └── middleware/ # 中间件
├── web/ # 前端资源
│ ├── static/ # 静态文件
│ └── templates/ # 模板文件
├── docs/ # 文档
├── schema.sql # 数据库结构
├── docker-compose.yml # Docker 配置
└── Makefile # 构建脚本
添加新功能
- 添加数据模型: 在
internal/models/
中定义数据结构 - 实现业务逻辑: 在
internal/services/
中实现业务逻辑 - 添加 API 接口: 在
internal/api/handlers/
中添加 HTTP 处理器 - 更新路由: 在
internal/api/router.go
中注册路由 - 更新前端: 修改
web/templates/index.html
添加 UI 功能
代码规范
- 使用
gofmt
格式化代码 - 遵循 Go 官方代码规范
- API 返回统一的 JSON 格式
- 数据库操作使用事务确保一致性
- 添加适当的日志记录
部署建议
生产环境部署
-
数据库优化:
- 使用独立的 MySQL 服务器
- 配置数据库连接池
- 定期备份数据
-
安全配置:
- 使用 HTTPS
- 配置防火墙规则
- 定期更新依赖版本
-
性能优化:
- 启用 Redis 缓存
- 配置 CDN 加速静态资源
- 使用负载均衡
-
监控告警:
- 配置日志收集
- 设置应用监控
- 配置告警通知
故障排除
常见问题
-
OAuth 认证失败:
- 检查 Gitea OAuth 应用配置
- 确认回调 URL 正确
- 检查网络连通性
-
数据库连接失败:
- 检查数据库服务状态
- 验证连接配置
- 确认数据库权限
-
Webhook 不工作:
- 检查 Gitea Webhook 配置
- 验证网络可达性
- 查看应用日志
贡献指南
- Fork 项目
- 创建功能分支
- 提交代码更改
- 创建 Pull Request
许可证
MIT License
联系我们
如有问题或建议,请提交 Issue 或联系项目维护者。
Description
Languages
Go
74.9%
HTML
22.6%
Makefile
1.6%
Dockerfile
0.9%