Skip to content

Repository files navigation

OrgRepoKanban — GitHub 组织仓库治理工具集

基于 React + TypeScript + Vite 的前端单页应用,面向 GitHub 组织管理员,提供统一入口管理组织仓库的权限Actions Secret

  • 🏠 首页导航:功能卡片式入口,一键跳转至各管理工具。
  • 📋 权限看板:看板式拖拽界面,管理团队或个人协作者的仓库权限。
  • 🔐 Secret 管理:为私有仓库批量配置 Actions Secret,支持拖拽匹配与待执行队列。

页面结构

访问 https://nevstop-lab.github.io/OrgRepoKanban/ 进入首页,通过功能卡片选择:

页面 功能 路径
🏠 首页 导航入口,卡片跳转 /
📋 权限看板 仓库权限拖拽管理 从首页进入
🔐 Secret 管理 私有仓库 Actions Secret 配置 从首页进入

每个功能页面均有「← 返回首页」按钮。

功能概览

权限看板

  • 输入 GitHub 个人访问令牌和组织名称,校验当前令牌是否是该组织管理员。
  • 支持团队与直接授权个人协作者两类主体。
  • 团队按父子层级展示,可直接管理父团队或子团队。
  • 直接协作者仅展示至少被一个仓库直接授权的用户。
  • 看板按权限列展示仓库:ReadTriageWriteMaintainAdmin未授权
  • 每个仓库只会显示在该主体的最高有效权限列。
  • 支持仓库名实时过滤,支持包含与模糊匹配。
  • 支持 全部 / Public / Private / Forked 预置过滤按钮,便于快速定位仓库。
  • 支持 Ctrl 或 Cmd 多选卡片,并批量拖拽修改权限。
  • 批量修改前会弹出确认框,执行后会展示成功/失败清单,并按真实结果回滚失败项。
  • 支持重新从 GitHub 拉取数据刷新当前看板。

Secret 管理

  • 左侧面板列出组织级 Actions Secret(名称从 API 获取,值需手动输入)。
  • 右侧面板列出私有仓库,标签显示已配置的 Secret。
  • 双向拖拽:拖拽 Secret 卡片到仓库,或反向拖拽仓库到 Secret,即可排入配置操作。
  • 点击仓库标签上的 × 按钮可排入删除操作。
  • 待执行操作面板(底部):
    • 列出所有排入操作及其中文描述。
    • 支持单条移除。
    • 确认执行:按顺序调用 GitHub API,失败操作保留在队列中供重试。
    • 取消全部:清空所有待处理操作。
  • Secret 值通过 libsodium 密封盒加密crypto_box_seal)后传输至 GitHub API。
  • 成功写入后自动清除明文值,不保留在内存中。

安全策略

  • PAT 与 Secret 值只保存在当前页面内存中。
  • 不会写入 localStoragesessionStoragecookie 或任何浏览器持久化存储。
  • 页面刷新后,令牌、组织名称和 Secret 值会失效,需要重新输入。
  • Secret 值通过 libsodium 密封盒加密后传输,不在网络中明文暴露。

令牌权限要求

建议使用具备以下权限的 GitHub 个人访问令牌:

  • admin:org
  • repo

如果当前令牌不是目标组织管理员,页面会明确提示,并阻止任何权限修改或 Secret 写入操作。

交互说明

首页导航

  1. 打开页面即进入首页。
  2. 点击「权限看板」或「Secret 管理」卡片进入对应功能。
  3. 在功能页点击「← 返回首页」回到导航。

权限看板 — 认证与加载

  1. 输入 PAT 和组织名称。
  2. 点击"连接组织"。
  3. 管理员校验通过后,系统会加载仓库、团队以及对应权限数据。

权限看板 — 主体切换

  1. 可在"团队"和"直接授权个人协作者"之间切换。
  2. 团队列表会按层级缩进显示。
  3. 个人协作者列表会在首次切换到该模式时按仓库聚合加载。

权限看板 — 看板拖拽

  1. 单击卡片可选中当前仓库。
  2. 按住 Ctrl 或 Cmd 再点击,可追加或取消多选。
  3. 拖拽到目标权限列后,会先弹出确认框。
  4. 拖到"未授权"列表示移除该主体对仓库的权限。

权限看板 — 过滤

  1. 输入仓库关键字后,看板会实时过滤。
  2. 支持不区分大小写的包含匹配,也支持按字符顺序的模糊匹配。
  3. 点击"清空过滤"可以恢复完整视图。

Secret 管理 — 认证与加载

  1. 输入 PAT 和组织名称,点击"连接组织"。
  2. 管理员校验通过后,自动加载组织 Secret 列表和私有仓库列表。
  3. 连接后可点击"刷新"重新拉取最新数据。

Secret 管理 — 配置 Secret

  1. 在左侧 Secret 卡片的输入框中填入 Secret 值。
  2. 拖拽 Secret 卡片到右侧仓库卡片(或反向拖拽),排入设置操作。
  3. 点击仓库标签旁的 × 按钮排入删除操作。
  4. 在底部面板查看所有待执行操作。
  5. 点击「确认执行」批量写入 GitHub;点击「取消全部」清空队列。
  6. 失败操作会保留在队列中,修正后重新确认即可。

Docker 部署

仓库已包含 Dockerfile.dockerignorenginx.conf,可直接构建镜像并部署。

构建镜像

docker build -t org-repo-kanban:latest .

运行容器

docker run --rm -p 8080:80 org-repo-kanban:latest

启动后可通过 http://localhost:8080 访问。

技术架构

  • 前端框架:React 19
  • 构建工具:Vite 8
  • 语言:TypeScript(strict 模式)
  • 测试:Vitest + Testing Library
  • 加密:libsodium-wrappers(Secret 密封盒加密)
  • 部署:GitHub Pages(静态文件)或 Docker + Nginx
  • 后端:无自定义后端,所有 API 调用直连 https://api.github.com

开发者

如需参与开发,请参阅 开发指南

Used by

Contributors

Languages