返回
req-platform
TypeScript

req-platform

公司内部需求协作平台:提需求 · 认领开发 · 协作交付 · 反馈迭代(NestJS + Prisma + Next.js + Gitea)

GitHub 仓库 →

项目简介

公司内部需求协作平台:提需求 · 认领开发 · 协作交付 · 反馈迭代(NestJS + Prisma + Next.js + Gitea)

说明

内部需求协作平台

面向公司内部的「需求发布 → 认领 → 协作开发 → 发布 → 反馈迭代」一体化平台。 以自建 Gitea + Gitea Actions 作为 Git 与 CI/CD 底座,自研平台通过 Gitea API 把仓库、Pull Request、Issue、流水线状态与业务数据打通。

解决什么问题

现状痛点平台能力
不会开发的同事有需求,只能口头找人结构化需求表单发布需求单,进入公开需求池
有开发能力的同事不知道别人的需求需求池 + 标签订阅,新需求按能力标签定向通知
多人重复开发相同功能需求单唯一化,且认领采用「先到先得」原子锁
缺少规范的协作与发布流程自动建仓(含模板)、PR 评审、Gitea Actions CI/CD
交付后没人管后续问题平台内反馈自动同步为仓库 Issue,形成迭代闭环

核心流程

架构

技术栈

层次选型
Git 与 CI 底座Gitea 1.22(兼容 GitHub API)+ act_runner(兼容 GitHub Actions 语法)
后端NestJS 10 + TypeScript + Prisma + PostgreSQL 16 + BullMQ/Redis 7
前端Next.js 14(App Router)+ React 18 + Ant Design 5
认证邮箱注册 + 管理员审核 + JWT
部署Docker Compose 单机部署(适合 100 人以内)

快速开始

1. 准备环境变量

2. 启动基础设施(数据库 / 缓存 / Gitea / Runner)

3. 初始化 Gitea(创建管理员、组织、API Token、Runner 令牌、仓库模板)

脚本会:

  • 创建 Gitea 管理员账号
  • 创建组织 GITEA_ORG(默认 projects),所有项目仓库都放在该组织下
  • 生成平台调用 Gitea 的 API Token(含 write:admin 等权限)并自动写回 .env
  • 生成 act_runner 注册令牌并写入 deploy/runner/.registration-token
  • 从 deploy/templates/repo-template 初始化 / 同步仓库模板

脚本可重复执行。修改了 deploy/templates/repo-template 后重新执行即可同步模板, 只影响之后新建的仓库。

4. 重启 Runner 完成注册

5. 启动平台

6. 访问

服务地址说明
需求协作平台http://localhost:8080使用 .env 中 ADMIN_EMAIL / ADMIN_PASSWORD 登录
Git 服务(Gitea)http://localhost:8081平台顶部「代码仓库」按钮一键免密进入;也可用 GITEA_ADMIN_USER 账号密码登录
接口文档http://localhost:8080/api/docs非生产环境下自动开启的 Swagger

平台与 Git 服务使用同一主机名、不同端口,这是免密登录(SSO)能生效的前提: 浏览器 Cookie 只按主机名共享、不区分端口。本地统一用 localhost,局域网内换成服务器 IP (例如 http://192.168.1.10 + http://192.168.1.10:8081)。

⚠️ 不要配成 app.localhost + git.localhost 这类主机名不同的组合 —— 那样 SSO 一定失效, 从平台点进 Git 服务会退回 Gitea 登录页。生产环境请让两个服务共用一个