完全重构版本 - 数据库改为 D1,原项目在 back 分支
基于 Cloudflare Pages + D1 + Vue 3 构建的现代化书签管理系统。
- 📑 分类管理:创建、编辑、删除书签分类
- 🔖 书签管理:添加、编辑、删除书签,支持拖拽排序
- 🔒 私密书签:支持设置私密书签,仅登录后可见
- 🔍 实时搜索:按名称或URL快速搜索书签
- 📥 导入导出:支持导出为 JSON/HTML 格式,导入浏览器书签
- 🎨 主题切换:支持明暗主题切换
- 🔐 登录保护:管理功能需要登录认证
- 📱 响应式设计:完美适配桌面端和移动端
- ⚡ 边缘部署:基于 Cloudflare Pages,全球加速
- 前端框架:Vue 3 + Composition API
- 构建工具:Vite
- 后端:Cloudflare Pages Functions
- 数据库:Cloudflare D1 (SQLite)
- 认证:JWT Token
- 样式:原生 CSS (现代化设计)
在 Cloudflare Dashboard 中:
- 进入
Workers & Pages>D1 - 点击
Create database,名称:bookmark-db - 进入数据库 >
Console,复制schema.sql内容并执行
重要:获取数据库 ID
- 创建数据库后,在数据库详情页面可以看到
Database ID - 复制这个 ID,稍后需要替换到
wrangler.toml文件中
- Fork 本仓库 到你的 GitHub
- 在 Cloudflare Dashboard 创建 Pages 项目
- 连接 GitHub 仓库
- 构建设置:
- 构建命令:
npm run build - 输出目录:
dist
- 构建命令:
重要:更新数据库 ID
- Fork 仓库后,编辑
wrangler.toml文件 - 将第8行的
database_id替换为你刚创建的数据库 ID - 提交并推送到你的 GitHub 仓库
在 Pages 项目中:
Settings>Functions>D1 database bindings- 添加绑定:变量名
DB,选择bookmark-db
注意: 如果绑定失败,请确保:
- 数据库名称与
wrangler.toml中的database_name一致 - 数据库 ID 已正确更新到
wrangler.toml文件中
在 Settings > Environment variables > Production 添加:
ADMIN_USERNAME = admin
ADMIN_PASSWORD = 你的密码
JWT_SECRET = 至少32位的随机字符串
完成!访问你的 Pages URL 即可使用。
- 浏览所有公开书签
- 使用搜索功能
- 切换主题
- 点击"登录"输入用户名和密码
- 点击"设置"按钮可以:
- 添加书签(可设置为私密)
- 输入URL后点击"自动获取"可自动抓取网页标题和描述
- 添加分类
- 导入/导出书签
- 查看统计信息
- 调整界面设置(搜索栏、空分类显示)
- 添加书签(可设置为私密)
- 点击"编辑"按钮可以:
- 拖拽排序书签
- 拖拽移动到其他分类
- 编辑/删除书签
- 编辑/删除分类
- 创建书签时勾选"私密书签"
- 私密书签带有🔒锁图标标识
- 仅登录后可见私密书签
- 退出登录后自动隐藏
- 私密书签(登录可见)
- 书签导入/导出(支持 JSON/HTML 格式,支持Chrome嵌套书签)
- 独立设置页面
- 拖拽排序(跨分类移动)
- 实时搜索(可开关,带防抖优化)
- 主题切换
- 批量导入(自动去重)
- Toast 通知系统
- 数据库索引优化
- 图片懒加载
- Token 过期自动处理
- 安全响应头(CSP、XSS 防护)
- 隐藏空分类选项
- 自动获取网页标题和描述
- 批量编辑
- 书签标签系统
- 多用户支持
- 书签分享功能
- 浏览器扩展
Apache License
欢迎提交 Issue 和 Pull Request!
Made with ❤️ using Vue 3 and Cloudflare