一个基于 GitHub Issues 的博客内容管理系统,包含桌面客户端和移动端应用。
这是一个使用 pnpm workspaces 管理的 mono repo,包含以下包:
issuedesk/
├── apps/
│ ├── desktop/ # Electron 桌面应用
│ └── mobile/ # React Native 移动应用
├── packages/
│ ├── shared/ # 共享类型和工具
│ └── github-api/ # GitHub API 客户端
└── package.json # 根包配置(含 workspaces)
- Node.js >= 18.0.0
- pnpm >= 8.0.0
# 安装 pnpm (如果还未安装)
npm install -g pnpm
# 安装所有包的依赖
pnpm install# 开发模式
pnpm dev:desktop
# 构建
pnpm build:desktop
# 打包分发
pnpm dist:desktop # 当前平台
pnpm dist:desktop:mac # macOS
pnpm dist:desktop:win # Windows
pnpm dist:desktop:linux # Linux# 开发模式
pnpm dev:mobile
# 构建
pnpm build:mobile# 构建共享包
pnpm build:shared
# 构建 GitHub API 包
pnpm build:github-api
# 构建所有包
pnpm build:all-
管理 Issues
- 创建、编辑、删除 Issues
- 支持纯文本编辑
- 状态管理(开放/关闭)
-
管理 Labels
- 创建、编辑、删除标签
- 颜色管理
- 标签分类
-
项目配置
- GitHub Token 配置
- 默认仓库设置
- 用户信息管理
- 在 GitHub 设置中创建 Personal Access Token
- 需要的权限:
repo(完整仓库访问)user(用户信息读取)
- 在桌面应用的设置页面配置 Token
参考 all-in-github 项目:
- Fork all-in-github 项目
- 启用 Issues 和 Workflows
- 配置 GitHub Actions
- 创建必要的标签:
Note、Blog、Publishing - 设置 GitHub Pages
- 在
packages/shared中定义类型和工具 - 在
packages/github-api中实现 API 调用 - 在
apps/desktop中实现 UI 界面
# 运行 lint
pnpm lint
# 类型检查
pnpm type-check# 清理所有 node_modules
pnpm clean- 桌面应用: Electron + React + TypeScript + Tailwind CSS
- 移动应用: React Native + Expo + TypeScript
- 共享包: TypeScript + Zod
- API 客户端: Axios + TypeScript
- 包管理: pnpm workspaces
MIT License