GitHub Profile Studio 是一个本地优先的 GitHub 公开资料工作台。它从服务端读取当前 GitHub 账户的公开信息,让用户审阅姓名与简介后写入 SQLite,并提供 Node/Hono 与 Go 两种兼容后端。
这个产品面向希望安全演示 GitHub API、表单、数据库迁移和多运行时后端能力的开发者。浏览器不接触访问凭据,只处理经过字段白名单过滤的公开资料。
- 从 GitHub API 读取登录名、头像、公开主页、公开仓库数、关注者和账户创建时间。
- 只允许用户编辑显示名称与个人简介。
- 使用 Drizzle 迁移和 SQLite 幂等保存单一 GitHub 资料记录。
- 在 Hono/Node 与 Go 后端之间切换,前端 API 契约保持一致。
- 对凭据缺失、鉴权失败、频率限制、数据校验和数据库错误返回安全提示。
- 工程基线:Better-T-Stack
- 界面:React 19、Tailwind CSS 4、TanStack Router
- Node 后端:Hono、Drizzle ORM、SQLite
- Go 后端:Go、SQLite、共享 SQL 迁移
- 工程质量:Vitest、Node Test Runner、Biome、GitHub Actions
flowchart LR
UI["React 工作台"] --> API["Hono API 或 Go API"]
API --> KEYCHAIN["macOS 钥匙串"]
API --> GITHUB["GitHub REST API"]
API --> DB["SQLite + Drizzle 迁移"]
前端只调用同源 /api 路由。两个后端实现相同的 JSON 契约和数据库行为,因此可以用同一套界面验证不同运行时。
- GitHub 凭据只保存在 macOS 钥匙串中,服务名为
github-profile-studio。 - 前端没有令牌输入框,也没有任何
VITE_*凭据通道。 - 服务端采用字段白名单,不保存私有邮箱、组织成员关系或仓库内容。
- Go 服务默认只监听
127.0.0.1:3002,降低本地钥匙串能力被局域网访问的风险。 - 错误响应不会包含令牌、系统命令输出、堆栈或本机路径。
完整说明见 安全边界。
环境要求:Node.js 22、pnpm 11、Go 1.26,以及 macOS 钥匙串。
先在“钥匙串访问”中创建通用密码项目:
- 名称:
github-profile-studio - 账户:
Tiancheng-Xu - 密码:具备读取个人公开资料权限的 GitHub 凭据
不要把凭据粘贴到终端、.env、聊天记录或仓库文件。
安装依赖:
pnpm install --frozen-lockfile使用 Hono/Node 后端:
pnpm dev使用 Go 后端:
pnpm dev:go浏览器打开 http://localhost:3001。
pnpm check
pnpm test
pnpm typecheck
pnpm build这些命令覆盖代码规范、结构与安全门禁、Node API、Go API、前端交互、类型检查和生产构建。
| 能力 | 状态 |
|---|---|
| React 工作台 | 本地实现完成 |
| Hono/Node API | 本地实现完成 |
| Go API | 本地实现完成 |
| SQLite 与 Drizzle 迁移 | 本地实现完成 |
| AWS 与容器基础设施 | 规划中 |
| 公网运行环境 | 尚未部署 |
公开仓库和 CI 不代表产品已经部署到公网。云端架构、费用边界和运行证据完成前,状态保持为规划中。
这是一个独立完成的个人产品。我负责需求拆解、前后端契约、React 交互、Hono 与 Go 双后端、数据库迁移、安全边界、自动化测试和公开交付整理。