{"id":51935352,"url":"https://github.com/deerwan/nav","last_synced_at":"2026-07-28T14:01:35.354Z","repository":{"id":319608225,"uuid":"1079275396","full_name":"deerwan/nav","owner":"deerwan","description":"基于Cloudflare Pages构建的书签管理工具","archived":false,"fork":false,"pushed_at":"2026-06-21T00:48:14.000Z","size":967,"stargazers_count":169,"open_issues_count":7,"forks_count":158,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-21T02:13:37.044Z","etag":null,"topics":["bookmark","nav"],"latest_commit_sha":null,"homepage":"https://nav.lllh.de","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deerwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-19T13:36:32.000Z","updated_at":"2026-06-21T00:48:18.000Z","dependencies_parsed_at":"2025-10-19T18:19:23.164Z","dependency_job_id":"363a7be9-3e4e-4335-962f-5f82da1978a8","html_url":"https://github.com/deerwan/nav","commit_stats":null,"previous_names":["deerwan/nav"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/deerwan/nav","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deerwan%2Fnav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deerwan%2Fnav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deerwan%2Fnav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deerwan%2Fnav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deerwan","download_url":"https://codeload.github.com/deerwan/nav/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deerwan%2Fnav/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35994924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-28T02:00:06.341Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmark","nav"],"created_at":"2026-07-28T14:01:34.431Z","updated_at":"2026-07-28T14:01:35.308Z","avatar_url":"https://github.com/deerwan.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 书签管理系统\n\n基于 Cloudflare Pages + D1 + Vue 3 构建的现代化书签管理系统。\n\n## ✨ 功能特性\n\n- 📑 **分类管理**：多级嵌套分类，支持拖拽排序\n- 🔖 **书签管理**：添加、编辑、删除书签，支持私密标记\n- 🔍 **实时搜索**：按名称、URL 或描述快速搜索\n- 📥 **导入导出**：支持 JSON/HTML 格式，导入浏览器书签\n- 💾 **云端备份**：备份到 Cloudflare R2，支持恢复（可选）\n- ⚡ **批量操作**：批量移动、编辑、删除\n- 🤖 **AI 功能**：智能生成描述、分类推荐（支持 OpenAI 兼容 API）\n- 🎨 **主题定制**：亮色/暗色主题、自定义壁纸、标题、页脚\n- 🌐 **浏览器扩展**：支持 Chrome、Edge、Brave、Firefox\n\n## 🛠️ 技术栈\n\nVue 3 + Vite + Cloudflare Pages Functions + D1 + R2\n\n## 🚀 快速部署\n\n### 1. 创建 D1 数据库\n在 [Cloudflare Dashboard](https://dash.cloudflare.com/) 中：\n- `Workers \u0026 Pages` \u003e `D1` \u003e `Create database`，名称：`bookmark-db`\n- 进入数据库 \u003e `Console`，执行 `schema.sql`\n\n### 2. 部署 Pages 项目\n- Fork [本仓库](https://github.com/deerwan/nav) 到 GitHub\n- 在 Cloudflare Dashboard 创建 Pages 项目，连接 GitHub 仓库\n- 构建设置：构建命令 `npm run build`，输出目录 `dist`\n\n### 3. 配置绑定和变量\n\n**绑定 D1 数据库**：\n- Pages 项目 \u003e `Settings` \u003e `Functions` \u003e `D1 database bindings`\n- 添加绑定：变量名 `DB`，选择 `bookmark-db`\n\n**配置环境变量**（部署后配置）：\n- Pages 项目 \u003e `Settings` \u003e `Variables and Secrets`\n- 添加以下变量后，在 `Deployments` 页面重试部署\n\n| 变量名 | 说明 | 必需 |\n|--------|------|------|\n| `ADMIN_USERNAME` | 管理员用户名 | ✅ |\n| `ADMIN_PASSWORD` | 管理员密码 | ✅ |\n| `JWT_SECRET` | JWT 密钥（至少32位随机字符串） | ✅ |\n| `OPENAI_API_KEY` | OpenAI API Key（AI 功能） | ❌ |\n| `OPENAI_BASE_URL` | API 地址（默认：`https://api.openai.com/v1`） | ❌ |\n| `OPENAI_MODEL` | 模型名称（默认：`gpt-4o-mini`） | ❌ |\n\n**配置 R2 备份**（可选）：\n- `Workers \u0026 Pages` \u003e `R2` \u003e `Create bucket`，名称：`bookmark-backups`\n- Pages 项目 \u003e `Settings` \u003e `Functions` \u003e `R2 bucket bindings`\n- 添加绑定：变量名 `BACKUP_BUCKET`，选择 `bookmark-backups`\n- 重试部署\n\n**配置 KV 速率限制**（可选，用于登录安全防护）：\n- `Workers \u0026 Pages` \u003e `KV` \u003e `Create namespace`，名称随意\n- Pages 项目 \u003e `Settings` \u003e `Functions` \u003e `KV namespace bindings`\n- 添加绑定：变量名 `RATE_LIMIT_STORAGE`，选择创建的 KV 命名空间\n- 重试部署\n- 配置后，同一用户名 1 分钟内最多只能尝试 5 次登录，防止暴力破解\n\n\u003e **提示**：所有配置通过 Dashboard 完成，无需修改代码。`wrangler.toml` 仅用于本地开发（已添加到 `.gitignore`）。\n\n**本地开发**：\n```bash\ncp wrangler.toml.example wrangler.toml\n# 编辑 wrangler.toml，替换 database_id\nnpm run dev\n```\n\n## 🧩 浏览器扩展\n\n**商店下载**：\n- [Edge 扩展](https://microsoftedge.microsoft.com/addons/detail/hepnnmnggonihfpkgcpengcaghlmjpkl)\n- [Firefox 扩展](https://addons.mozilla.org/en-US/firefox/addon/%E4%B9%A6%E7%AD%BE%E7%AE%A1%E7%90%86%E5%8A%A9%E6%89%8B-bookmark-manager/)\n\n**手动安装**：\n在 [Releases](https://github.com/deerwan/nav/releases) 下载扩展：\n- Chrome/Edge/Brave: `bookmark-manager-chromium.zip`\n- Firefox: `bookmark-manager-firefox.zip`\n\n安装后配置服务器地址和管理员账号即可使用。\n\n## 📖 更多信息\n\n- 📺 [视频教程](https://www.bilibili.com/video/BV1zR2MB6EnW/)\n- 📦 [GitHub 仓库](https://github.com/deerwan/nav)\n\n## 💰 请喝咖啡\n\n如果这个项目对你有帮助，欢迎赞助支持！\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cstrong\u003e微信\u003c/strong\u003e\u003cbr\u003e\n      \u003cimg src=\"images/zsm.jpeg\" alt=\"微信\" width=\"200\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cstrong\u003e支付宝\u003c/strong\u003e\u003cbr\u003e\n      \u003cimg src=\"images/zfb.JPG\" alt=\"支付宝\" width=\"200\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cstrong\u003e红包码\u003c/strong\u003e\u003cbr\u003e\n      \u003cimg src=\"images/hbm.PNG\" alt=\"红包码\" width=\"200\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n☕ [查看咖啡列表](https://lllh.de/sponsor/) - 感谢所有支持者！\n\n## 📝 许可证\n\nApache License 2.0\n\nMade with ❤️ using Vue 3 and Cloudflare\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeerwan%2Fnav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeerwan%2Fnav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeerwan%2Fnav/lists"}