一个基于 GitHub Issues 的 Memos 替代。配合 VandeeFeng/gitmemo,提供一个简单的页面。
代码由 cursor 协助生成。
由于 Memos 总是不太稳定,而 GitHub Issues 基本上可以满足我所有记录 Memos 的需求,因此做了这个页面。
部署到 Vercel 时填写必要的环境变量即可默认显示自己仓库的 issues 数据。
如果想显示其他仓库,现在只是提供了一个 简单的 GitHub Config 来配置仓库和 API,数据保存在 supabase 中。会优先获取环境变量的账号数据,具体的登录功能没有继续往下了。
- Framework: Next.js 13+ (App Router)
- UI: Tailwind CSS
- UI: shadcn/ui
- Language: TypeScript
- Database: Supabase
- Backend: GitHub API
- Deploy: Vercel
- 📝 基于 GitHub Issues 的笔记管理
- 📝 基于 Supabase 的数据库
- 🔄 同步 GitHub Issues 数据
- 🎨 支持亮色/暗色主题
- ✨ Markdown 编辑和实时预览
- 🏷️ 标签管理和筛选
- 🔗 反链
- 📤 卡片分享
-
克隆仓库并安装依赖:
git clone [email protected]:VandeeFeng/gitmemos.git cd gitmemos npm install
-
配置环境变量: 复制
.env.example到.env.local并配置以下环境变量:GITHUB_TOKEN: GitHub 个人访问令牌GITHUB_OWNER: GitHub 用户名GITHUB_REPO: GitHub 仓库名GITHUB_WEBHOOK_SECRET: GitHub webhook 密钥(可选)
SUPABASE_URL: Supabase 项目 URLSUPABASE_ANON_KEY: Supabase 匿名密钥SUPABASE_SERVICE_ROLE_KEY: Supabase 服务角色密钥
NEXT_PUBLIC_APP_URL: 应用访问地址- 开发环境:
http://localhost:3000 - 生产环境: 实际域名(如
https://your-app-url.com)
- 开发环境:
ENCRYPTION_KEY: 用于加密敏感数据的密钥PASSWORD: 用于创建和更新 issues 的密码(可选,如果不设置则使用数据库中的密码)DEBUG_MODE: 设置为 'true' 开启调试日志
-
启动开发服务器:
npm run dev
- 访问仓库,点击
Settings->Developer settings->Personal access tokens->Generate new token - 生成新的 token,找到仓库,勾选
issue读写权限 - 将 token 添加到
.env.local文件中
- 访问仓库,点击
Settings->Webhooks->Add webhook - 填写
Payload URL为https://your-vercel-app-url/api/webhook/github - 选择
Content type为application/json - 选择
Secret为your_secret_key,这个 secret 需要和.env.local的GITHUB_WEBHOOK_SECRET的 secret 一致 - 选择
Which events would you like to trigger this webhook?为Issues、Labels - 点击
Add webhook
在 supabase 里有四个表,分别是 configs, issues, labels, sync_history
configs 表是用来存储用户配置的,包括 owner, repo, password
issues 表是用来存储 issues 的,包括 owner, repo, issue_number, title, body, state, labels, github_created_at, updated_at, created_at
labels 表是用来存储 labels 的,包括 owner, repo, name, color, description, updated_at, created_at
sync_history 表是用来存储同步历史的,包括 owner, repo, last_sync_at, issues_synced, status, error_message, created_at, updated_at
这部分可以根据自己的需求进行修改,比如添加更多的字段,或者修改表结构。
- 所有敏感 API 调用都经过来源验证
- 带有
NEXT_PUBLIC_前缀的环境变量在浏览器中可访问 - 请确保
.env.local文件的安全,永远不要将其提交到版本控制系统中 - 所有加密操作仅在服务器端执行,确保密钥安全
- 密码和 GitHub Token 在数据库中以加密形式存储
- 如果设置了环境变量中的
PASSWORD,它将优先于数据库中的密码
项目提供了完整的调试日志系统:
- 设置
DEBUG_MODE=true开启详细的调试日志 - 调试日志包含加密操作、API 调用等关键操作的详细信息
- 生产环境中错误和警告日志始终可见,调试日志仅在调试模式下可见
- 搜索功能
- 数据库
- 登录功能
- TimeLine
- 分享功能
- 实时更新,配置了GitHub webhook
- 移动端适配
- 优化数据处理
- AI 功能


