[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2108":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},2108,"edgeKey","34892002\u002FedgeKey","34892002","基于 Vike 驱动的全栈卡密商城系统，一键部署至 Cloudflare Workers。| A Vike-powered full-stack digital shop, one-click deploy to Cloudflare Workers.","https:\u002F\u002Fshop.v50.app",null,"TypeScript",198,65,126,0,3,9,31,5.46,"MIT License",false,"main",true,[],"2026-06-12 02:00:37","[![English](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FEnglish-Click-yellow)](README-en.md)\n[![中文文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F中文文档-点击查看-orange)](README.md)\n\n# EdgeKey\n\nEdgeKey 是一套有vike框架开发，可直接部署到 Cloudflare 的一体化全栈卡密商城系统：同一套代码同时包含前端页面、SSR 渲染、后端 API \u002F 数据变更入口，并由 Cloudflare Workers 运行。\n\n## 功能特性\n\n- 🚀 **真正的零成本** — 不用购买服务器和域名，基于 Cloudflare 全球边缘网络运行。一键部署，即刻上线。把钱花在刀刃上，把时间还给自己。\n- 🌍 **零成本运维** — 基于 Workers + D1，免费额度足够满足日常运营，无需担心额外的账单扣费。\n- 🛍️ **商品管理** — 支持分类、商品上下架、库存模式（有限\u002F无限）、最小\u002F最大购买数量。\n- 🔑 **卡密管理** — 批量导入卡密，支付后自动发货，支持库存实时预警。\n- 📦 **订单管理** — 包含订单列表、手动补发、自动关闭过期订单及详细的支付日志。\n- 💳 **多支付网关** — 内置 BEpusdt (USDT)、Epay (聚合支付)，支持插件式扩展更多接口。\n- 📧 **邮件通知** — 支持 SMTP \u002F API \u002F Cloudflare Email 三种通道，内置详细的邮件发送日志。\n- ⚙️ **站点设置** — 灵活配置站点名称、Logo、公告及客服联系方式。\n- 🔐 **管理后台** — 安全可靠的管理员账号体系。\n\n> [!TIP]\n> **关于 0 成本运行：** 在配合支付渠道（usdt、自建等）、个人邮箱 SMTP 以及免费图床的理想状态下，本项目可实现 **100% 零成本** 运营。\n\n## 技术文档 & 资源推荐\n- [一键部署教程](.\u002Fdocs\u002Ffast_deploy\u002Fstart.md)\n- 支付：[BEpusdt](.\u002Fdocs\u002Fpay\u002Fbepusdt\u002Fstart.md)、 [易支付](.\u002Fdocs\u002Fpay\u002Fepay\u002Fstart.md) 、[支付宝](.\u002Fdocs\u002Fpay\u002Falipay\u002Fstart.md) 、[Stripe](.\u002Fdocs\u002Fpay\u002Fstripe\u002Fstart.md)\n- S3存储：[backblaze](https:\u002F\u002Fwww.backblaze.com\u002F) 免费提供 10GB 空间免绑卡\u002F手机号验证。本项目已完美适配 Cloudflare（小黄云），接入后流量费全免；未接入 CF 的用户请选用其他 S3 或图床\n- 图床: [91星空图床](https:\u002F\u002Fimg.91starry.com\u002F) 免费1G、邮箱注册即用\n- 邮件: [resend](https:\u002F\u002Fresend.com\u002F) 免费用户每日可发 100 封邮件，支持自定义域名发信，免信用卡与手机号验证，开箱即用。\n- [更新日志](.\u002FCHANGELOG.md)\n\n## 项目截图\n![1](https:\u002F\u002Fimg.91starry.com\u002Fuploads\u002F20260427\u002F6286ff36cc987c47a1a27516db0d94c8.jpg)\n\n![2](https:\u002F\u002Fimg.91starry.com\u002Fuploads\u002F20260427\u002F6072aac36a1d1db8b79cdb535d45138f.jpg)\n\n![3](https:\u002F\u002Fimg.91starry.com\u002Fuploads\u002F20260427\u002F95dedb45c5d16d8cf69ffa058539b19d.jpg)\n\n## 快速开始\n\n本项目支持三种部署方式，按推荐程度排序：\n\n| 方式 | 适合场景 | 便捷程度 |\n|---|---|---|\n| **一键部署**（推荐） | 首次部署，无需本地环境 | ⭐⭐⭐ 最简单，点击按钮全自动完成 |\n| **Git 自动部署** | 持续迭代，代码推送自动更新 | ⭐⭐ 配置一次后全自动 |\n| **手动部署** | 二开需求，细节掌控 | ⭐ 需要本地环境和命令行操作 |\n\n详细步骤见下方各章节说明。\n\n### 一键部署到 Cloudflare Workers\n\n[![Deploy to Cloudflare](https:\u002F\u002Fdeploy.workers.cloudflare.com\u002Fbutton)](https:\u002F\u002Fdeploy.workers.cloudflare.com\u002F?url=https:\u002F\u002Fgithub.com\u002F34892002\u002FedgeKey)\n\n> **点击按钮后，会打开 Cloudflare Workers 部署向导，操作提示：**\n> 1. 登录并授权 Git 账户(github、gitlab)，它会自动在你的git账号创建一个新仓库。\n> 2. 为了增强安全性，请在向导中修改默认的密钥（ `AUTH_SECRET`）。\n> 3. 如果你不绑定已有的D1数据库，它会自动完成新建数据库并初始化数据（管理员账号等）的操作，无需手动干预。\n> 4. 部署成功之后在页面的日志里面可以找到 \"Deployed edgekey triggers (0.38 sec) https:\u002F\u002Fedgekey.你的账号.workers.dev\" 这样的日志，其中 \"https:\u002F\u002Fedgekey.你的账号.workers.dev\" 就是你的项目网址。\n> 5. https:\u002F\u002Fedgekey.你的账号.workers.dev\u002Fadmin 为管理后台登陆地址，默认管理员账号:admin，密码:admin123456，切记登陆后立即修改密码！\n\n**一键部署常见问题** \n\n如果 Cloudflare 提示【无法获取存储库内容】类似的异常信息，多半是很久之前绑定过github但授权状态过期或者异常，解绑后重新绑定授权即可。\n\n一键部署与手动部署存在 wrangler.jsonc 文件的配置冲突，执行 `wrangler d1 ` 开头的命令需要配置 `database_id: 数据库id` ，填写[数据库ID](#如何获取数据库id)，否则会报错。受到影响的命令有 `npm run up` 和 `npm run db:` 开头的命令。\n\n**一键部署后续更新方法**\n\na.首次更新\n```base\ngit remote add upstream https:\u002F\u002Fgithub.com\u002F34892002\u002FedgeKey.git\ngit fetch upstream\ngit merge upstream\u002Fmain --allow-unrelated-histories\ngit push origin main\n```\n\nb.后续更新\n```base\ngit fetch upstream\ngit merge upstream\u002Fmain\ngit push origin main\n```\n\n> 在你的仓库执行上面的命令更新你的仓库到最新代码，最后git push origin main推送到你的仓库，cloudflare检测到就会自动触发部署\n\n### 通过 Git 连接 Cloudflare 自动部署\n\n如果你使用 Cloudflare Workers 的 Git 集成（连接 GitHub\u002FGitLab 仓库自动部署），需要先完成以下前置步骤：\n\n### Cloudflare Turnstile（管理员登录验证码）\n\n项目现已支持在 **管理员登录页** 接入 Cloudflare Turnstile 小组件，用于拦截自动化爆破登录。\n\n需要在 Cloudflare Dashboard 的 Turnstile 中创建站点，并配置以下环境变量：\n\n- `TURNSTILE_SITE_KEY`：前端小组件站点 Key\n- `TURNSTILE_SECRET_KEY`：服务端校验 Secret Key\n\n使用命令给当前项目配置Turnstile\n```bash\nwrangler secret put TURNSTILE_SECRET_KEY\nwrangler secret put TURNSTILE_SECRET_KEY\n```\n说明：\n- 两个变量都未配置时，Turnstile 默认关闭，不影响现有登录流程\n- 两个变量都正确配置后，后台登录页会自动显示 Turnstile 小组件，并在服务端强制校验\n- 如果只配置了其中一个变量，系统会自动视为未启用，避免出现半配置状态\n\n**0. 前置：在 Cloudflare Dashboard 创建 D1 数据库**\n\n1. [创建数据库](#如何创建数据库) 名称填 `edgekey-db`\n3. 记录[数据库id](#如何获取数据库id) `database_id` ，后续部署命令中需要用到\n\n数据库表结构和种子数据会在首次部署时由 `deploy` 脚本自动完成初始化，无需手动操作。\n\n**1. 部署命令**\n\n由于 `wrangler.jsonc` 中的 `database_id` 需要与你的实际[D1 数据库](#如何获取数据库id)绑定，Git 自动部署时请在 Cloudflare 的\"构建配置\"中将部署命令设置为：\n\n```bash\nsed -i 's\u002F\"database_name\": \"edgekey-db\"\u002F\"database_name\": \"edgekey-db\", \"database_id\": \"你的database_id\"\u002F' wrangler.jsonc && bun run deploy\n```\n\n**2. 配置 AUTH_SECRET 环境变量**\n\n在 Cloudflare Workers Git 集成的\"高级设置\"中：\n1. 添加变量名 `AUTH_SECRET`\n2. 输入你的密钥字符串作为变量值\n3. 勾选\"加密\"选项\n\n### 构建与部署（手动）\n\n首次部署到 Cloudflare 前，需要先在云端创建并初始化 D1 数据库：\n\n1. **登录并创建数据库**\n   ```bash\n   bunx wrangler login\n   bunx wrangler d1 create edgekey-db\n   ```\n\n2. **绑定 Database ID**\n   将上一步终端输出的 `database_id` 填入 `wrangler.jsonc`。\n\n```jsonc\n\"d1_databases\": [\n\t{\n\t\t\"binding\": \"DB\",\n\t\t\"database_name\": \"edgekey-db\",\n\t\t\"database_id\": \"这里填入你刚创建数据库的UUID\", \u002F\u002F \u003C-- 必须添加这一行\n\t\t\"migrations_dir\": \"prisma\u002Fmigrations\"\n\t}\n]\n```\n\n3. **按顺序初始化云端表结构**\n   ```bash\n   bun run db:migrations:remote\n   ```\n\n4. **初始化管理员账号与初始化种子数据**\n   ```bash\n   bun run db:seed:remote\n   ```\n\n5. **配置 AUTH_SECRET**\n  输入命令执行，根据命令行提示输入你要使用的密钥字符串。```bash\n   bunx wrangler secret put AUTH_SECRET\n   ```\n\n6. **生成 Prisma Client 并一键部署**\n   ```bash\n   bun run db:generate\n   bun run up\n   ```\n\n`bun run up` 等价于先构建再发布：\n- `vike build`\n- `wrangler deploy`\n\n部署配置见 `wrangler.jsonc`（其中 `main` 指向 Photon 的 Cloudflare server-entry 虚拟入口）。\n\n## 安全性说明（重要）\n\n当前项目使用管理员账号密码登录。用于生产环境前请务必：\n- Cloudflare 生产环境必须配置 `AUTH_SECRET`，未配置会抛出异常并禁止管理员登录\n- 配置方式详见上方\"一键部署\"、\"通过 Git 连接 Cloudflare 自动部署\"、\"构建与部署（手动）\"各章节说明\n- 生产环境配置AUTH_SECRET命令 `wrangler secret put AUTH_SECRET`\n- 默认管理员账号为 `admin \u002F admin123456`，首次登录后请立即修改密码\n\n### 忘记密码？\n\n在 Cloudflare Dashboard 中通过 D1 Console 将密码重置为 `admin123456`：\n执行以下 SQL [如何执行sql](#如何执行sql)：\n\n```sql\nUPDATE Admin SET passwordHash = '$2b$10$viMe8RgcpM30gmmF9OpOcuA\u002FQgleSIUk5VRtqjOulfSIbgK5jQCI6' WHERE username = 'admin';\n```\n\n4. 登录后台后立即修改密码\n\n### 忘记双重认证验证码？\n\n如果已启用双重认证，但验证器 App 丢失或无法获取验证码，可以在 Cloudflare Dashboard 中通过 D1 Console 临时关闭该管理员账号的双重认证。\n执行以下 SQL [如何执行sql](#如何执行sql)：\n\n```sql\nUPDATE \"Admin\"\nSET \"twoFactorEnabled\" = false,\n    \"twoFactorSecret\" = NULL,\n    \"twoFactorEnabledAt\" = NULL\nWHERE \"username\" = 'admin';\n```\n\n关闭后请立即登录后台，前往 **安全设置** 重新绑定身份验证器 App。该操作需要数据库管理权限，仅作为账号恢复手段使用。\n\n\n## Cloudflare平台操作\n\n### 如何创建数据库\n\n1. 进入 [dash.cloudflare.com](https:\u002F\u002Fdash.cloudflare.com) → **存储和数据库** → **D1 数据库**\n2. 页面右侧点击 **创建数据库** 进入创建 D1 数据库页面\n3. **名称**填写数据库名称，**数据位置**没有特殊需求一般选择 自动...最近的可用区域\n\n#### 如何获取数据库ID\n\n1. 进入 [dash.cloudflare.com](https:\u002F\u002Fdash.cloudflare.com) → **存储和数据库** → **D1 数据库**\n2. 页面右侧会展示你创建的所有数据库\n3. 找到你要操作的数据库名称 比如`edgekey-db` 点击对应的`UUID`即可复制id\n\n### 如何执行SQL\n\n1. 进入 [dash.cloudflare.com](https:\u002F\u002Fdash.cloudflare.com) → **存储和数据库** → **D1 数据库**\n2. 页面右侧会展示你创建的所有数据库，点击你要操作的数据库名称 比如 `edgekey-db`\n3. 点击顶部标签 → **控制台**\n\n## 本地开发\n\n推荐使用 Bun（也可替换为 npm\u002Fpnpm\u002Fyarn）。\n\n```bash\nbun install\n```\n\n由于本项目使用了 Cloudflare D1 数据库，在首次启动本地开发服务器前，必须先初始化本地的 D1 模拟器表结构：\n\n```bash\n# 1. 生成 Prisma Client（首次安装依赖后必须执行）\nbun run db:generate\n\n# 2. 按顺序将所有迁移脚本应用到本地 Wrangler 模拟器\nbun run db:migrations:local\n\n# 3. 初始化管理员账号与初始化种子数据\nbun run db:seed\n\n# 4. 准备.env 文件\n# 请在 `env.example` 中填写必要的环境变量，例如 `AUTH_SECRET`。\n# 然后复制 `env.example` 到 `env` 文件。\n\n# 5. 启动开发服务器\nbun run dev\n```\n\n### 开发技术文档与规范\n\n[本地开发规范](.\u002Fdocs\u002Fdevelopment-guide.md)\n\n\n## 鸣谢\n\n感谢 [Linux.do](https:\u002F\u002Flinux.do\u002F) 、[NodeSeek](https:\u002F\u002Fwww.nodeseek.com\u002F) 社区支持。\n\n感谢下列开源项目\n- [Ebpusdt](https:\u002F\u002Fgithub.com\u002Fv03413\u002FBEpusdt) — 加密货币交易支持\n- [worker-mailer](https:\u002F\u002Fgithub.com\u002Fzou-yu\u002Fworker-mailer) — Workers环境SMTP邮件支持\n\n\n## 🏝️ 社区交流\n- Telegram 群组：https:\u002F\u002Ft.me\u002FedgeKeyChannel\n- Telegram 频道：https:\u002F\u002Ft.me\u002FedgeKeyGroup\n","EdgeKey 是一个基于 Vike 框架开发的全栈卡密商城系统，能够一键部署到 Cloudflare Workers。其核心功能包括商品管理、卡密管理和订单管理等，支持多支付网关和邮件通知，并且提供灵活的站点设置和安全的管理后台。项目利用 Cloudflare 全球边缘网络运行，无需购买服务器和域名，实现真正的零成本运维。特别适合需要快速搭建并上线数字商品销售平台的小型企业或个人开发者使用。",2,"2026-06-11 02:48:10","CREATED_QUERY"]