🛍️ GitStore
插件商店和许可证管理平台
专为 Github 私有项目设计的商业分发平台,支持永久许可证 + 时限维护的创新授权模式。
做这个项目是因为自己有一些 Github 的小玩意,想拿来换点小钱,但没有一个趁手的授权程序,就自己和 AI 双排(主要是 AI)撸了一个。
Github https://github.com/nodeloc/gitstore
Demo https://discourseplugin.com

💡 为什么选择 Git-Store ?
你是一位 GitHub 开源开发者吗?想要将你的创意项目变现,同时保持开源精神?
Git-Store 解决了插件开发者的变现难题:
- 📦 出售你的插件 - 将业余项目转化为可持续的收入来源
- 🔓 保持代码开放 - 用户购买后永久拥有代码,无 DRM 锁定
- ⚡ 零集成工作 - 无需在插件中添加授权验证代码
- 🤝 公平模式 - 买家获得永久访问权,你获得持续支持的报酬
- 🎯 专注创作 - 我们处理支付、访问控制和客户管理
完美适用于:
- 👨💻 拥有高级插件的独立开发者
- 🏢 提供商业扩展的团队
- 💼 提供定制论坛解决方案的代理商
- 🎓 销售教育类插件的教育工作者
不再担心盗版和许可证验证。开始从你的创意中获得收益。
✨ 核心特性
🎯 独特的授权模式
- 永久许可证 - 一次购买,插件代码永久拥有
- 时限维护期 - 默认 12 个月技术支持和更新
- 零侵入设计 - 无需在代码中集成授权验证逻辑
- 灵活访问控制 - 通过 GitHub 组织管理插件访问权限
🔐 GitHub 深度集成
- GitHub OAuth 登录,无需额外账号体系
- 支持个人和组织账号
- 直接集成 GitHub 仓库
- 已购插件的自动访问管理
💳 多种支付方式
| 支付方式 | 覆盖地区 | 状态 |
|---|---|---|
| 💎 Stripe | 全球 | ✅ 已集成 |
| 💚 支付宝 | 中国 | ✅ 已集成 |
📧 智能通知系统
- ✉️ 购买成功即时通知
- ⏰ 维护到期多级提醒( 30 天/7 天/1 天)
- 🔔 维护已到期通知
- ✅ 续费成功确认
📊 数据分析
- 实时销售统计和收入趋势
- 用户增长和活跃度分析
- 插件下载和使用统计
- 可视化报表导出
🏗️ 技术架构
| 后端 | Go 1.21+ / Gin Framework / GORM |
| 前端 | Vue 3.4 / Vite 5 / TailwindCSS / DaisyUI |
| 数据库 | PostgreSQL 14+ |
| 认证 | GitHub OAuth + JWT |
| 支付 | Stripe / PayPal / Alipay |
| 部署 | Docker / Nginx Proxy Manager |
🚀 快速部署
方式一:Docker 一键部署(推荐)
# 1. 克隆代码
git clone https://github.com/nodeloc/gitstore.git /opt/gitstore
cd /opt/gitstore
# 2. 配置环境变量
cp .env.example .env
nano .env # 修改必要的配置
# 3. 执行部署脚本
export DOMAIN="your-domain.com"
sudo ./deploy.sh
部署完成后访问 http://YOUR_SERVER_IP:81 配置 Nginx Proxy Manager 。
详细步骤请参考 NPM_SETUP.md
方式二:本地开发
# 1. 启动数据库(使用 Docker )
docker-compose up -d postgres
# 2. 运行迁移
psql -h localhost -p 5433 -U postgres -d git_store < migrations/001_initial_schema.sql
# 3. 启动后端
go run main.go
# 4. 启动前端
cd frontend
npm install
npm run dev
访问 http://localhost:3001
⚙️ 配置指南
1️⃣ GitHub OAuth 应用
访问 GitHub Developer Settings 创建 OAuth App:
- Application name:
gitstore - Homepage URL:
https://your-domain.com - Callback URL:
https://your-domain.com/api/auth/github/callback
获取 Client ID 和 Client Secret
2️⃣ GitHub 个人访问令牌
为了管理已购插件的仓库访问权限,你需要一个 GitHub 个人访问令牌:
- 访问 GitHub Tokens
- 点击「 Generate new token (classic)」
-
配置令牌:
- Note:
gitstore admin token - Expiration: No expiration (或自定义)
- Scopes: 选择
admin:org→write:org(用于管理组织成员)
- Note:
- 生成并复制令牌
添加到 .env:
GITHUB_ADMIN_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
说明:此令牌用于在用户购买/过期插件时,自动添加/移除用户到你的 GitHub 组织。
管理员配置
[email protected]
ADMIN_GITHUB_ID=your_github_user_id
设置为管理员的 Github 邮箱和用户名,使用 Github 登录时,会自动将此用户设置为管理员。
3️⃣ Stripe 支付配置
访问 Stripe Dashboard:
STRIPE_SECRET_KEY=sk_live_xxx # 生产环境用 live ,测试用 test
STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
创建 Webhook(用于接收支付状态):
- URL:
https://your-domain.com/api/webhooks/stripe - Events:
payment_intent.succeeded,payment_intent.payment_failed
4️⃣ 环境变量配置
完整的 .env 配置示例:
# 应用配置
APP_ENV=production
APP_PORT=8080
APP_URL=https://your-domain.com
FRONTEND_URL=https://your-domain.com
# 数据库
DB_HOST=postgres
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_strong_password
DB_NAME=git_store
# GitHub OAuth
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
GITHUB_REDIRECT_URL=https://your-domain.com/api/auth/github/callback
GITHUB_ORG_NAME=your-org-name
GITHUB_ADMIN_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
# JWT
JWT_SECRET=your-random-64-character-secret-key
JWT_EXPIRY_HOURS=720
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# 邮件(可选)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=your-app-password
[email protected]
🎮 使用流程
管理员端
- 登录后台:使用 GitHub 账号登录
- 创建分类:为插件设置分类(如:功能增强、主题美化)
-
添加插件:
- 填写插件名称、描述、价格
- 设置 GitHub 仓库地址
- 配置默认维护期(月)
- 管理订单:查看订单状态、收入统计


用户端
- 浏览插件:在商店浏览可用插件
- 购买插件:选择插件,使用 Stripe 完成支付
- 获取访问权:自动获得 GitHub 私有仓库访问权限
- 安装插件:通过 GitHub 克隆/下载插件代码
- 维护续费:到期前可续费延长更新权限
整个项目基本都是 AI 写的。花了大概 2 天时间打磨了一下细节。