一个简单易用的网址收藏夹管理工具,基于Go语言后端和Vue.js前端构建。
- 📁 文件夹管理 - 创建、编辑、删除文件夹,支持嵌套结构
- 🔖 书签管理 - 添加、编辑、删除网址书签,支持批量操作
- 🔄 拖拽排序 - 支持文件夹和书签的拖拽重排序
- 📦 批量操作 - 批量选择、删除和移动书签
- 🌐 元数据获取 - 自动获取网页标题和favicon图标
- 🎨 现代化界面 - 简洁美观的用户界面
- 📱 响应式设计 - 适配不同屏幕尺寸
- ⚡ 快速响应 - 基于SQLite本地数据库,查询速度快
- 🔒 安全可靠 - 支持内网HTTPS站点访问
- 📤 导入导出 - 支持JSON格式书签的导入和导出
- 🌐 Edge浏览器支持 - 支持导入和导出Edge浏览器的HTML格式书签
- 🎨 主题切换 - 支持浅色和深色主题切换
- 🎨 背景设置 - 支持自定义背景(默认、纯色、图片),可调节面板透明度
- 📊 每页显示 - 支持自定义每行显示的书签数量(1-6个)
- 🔍 搜索功能 - 支持按网址名称搜索书签
- 💾 配置保存 - 所有设置自动保存到数据库,跨浏览器同步
- Go 1.21+ - 主要编程语言
- Chi - 轻量级HTTP路由器
- SQLite - 本地数据库存储
- Go Modules - 依赖管理
- Vue.js 3 - 现代JavaScript框架
- HTML5/CSS3 - 页面布局和样式
- Fetch API - HTTP请求处理
- SQLite数据库文件:
data.db - 支持外键约束和数据一致性
- 自动维护排序位置
- Go 1.21 或更高版本
- 支持SQLite的操作系统(Windows/macOS/Linux)
- Docker(可选,用于容器化部署)
-
克隆或下载项目
git clone <项目地址> cd bookmarks
-
运行应用
- 使用默认端口8901启动:
go run main.go
- 自定义端口启动:
go run main.go -port 3000
- 自定义数据路径和端口:
go run main.go -dataUrl /path/to/data -port 8080
-
访问应用
- 默认访问地址:http://localhost:8901
- 或访问您指定的端口地址
- 查看所有可用选项:
go run main.go -h
快速启动(推荐新手使用):
Linux/macOS用户:
cd docker
./start.shWindows用户:
cd docker
start.bat详细使用指南:
请查看 docker/README.md 获取完整的Docker部署指南,包括:
- 快速启动
- 自定义端口
- 手动构建和运行
- 常用命令
- 故障排除
手动启动:
-
使用docker-compose快速启动
cd docker docker-compose up -d应用将在默认端口8901上运行,访问地址:http://localhost:8901
-
自定义端口启动
# 方法1:修改docker-compose.yml中的PORT环境变量 # 然后运行 cd docker docker-compose up -d # 方法2:命令行指定端口(例如使用8080端口) cd docker PORT=8080 docker-compose up -d
-
手动构建和运行
# AMD64架构 docker build -f docker/Dockerfile.amd64 -t bookmarks:amd64 . docker run -d -p 8901:8901 -v $(pwd)/data:/app/data bookmarks:amd64 # ARM64架构(如树莓派等) docker build -f docker/Dockerfile.arm64 -t bookmarks:arm64 . docker run -d -p 8901:8901 -v $(pwd)/data:/app/data bookmarks:arm64
-
使用自定义端口运行
# 映射到8080端口 docker run -d -p 8080:8901 -v $(pwd)/data:/app/data bookmarks:amd64 # 映射到3000端口 docker run -d -p 3000:8901 -v $(pwd)/data:/app/data bookmarks:amd64
-
停止和删除容器
cd docker # 停止容器 docker-compose down # 停止并删除数据卷 docker-compose down -v
应用的数据(SQLite数据库)默认存储在容器内的/app/data目录。为了防止数据丢失,建议使用Docker volume或绑定挂载:
- docker-compose方式:已自动配置
../data:/app/data挂载,数据会保存在宿主机的./data目录(相对于项目根目录) - docker run方式:使用
-v $(pwd)/data:/app/data参数挂载
# 查看容器日志
cd docker
docker-compose logs -f bookmarks
# 查看容器状态
cd docker
docker-compose ps
# 重启容器
cd docker
docker-compose restart
# 进入容器
docker exec -it bookmarks sh
# 查看容器健康状态
docker inspect bookmarks | grep -A 10 Health启动时可以通过命令行参数自定义配置:
go run main.go -dataUrl=/path/to/your/data/go run main.go -port 3000go run main.go -dataUrl=/path/to/data -port 8080go run main.go -h可用参数:
-dataUrl:数据存储路径(默认:"./")-port:服务器监听端口(默认:"8901")
-
创建文件夹
- 点击左侧"新建文件夹"按钮
- 或右键点击现有文件夹选择"新建子文件夹"
-
添加书签
- 点击左侧"添加网址"按钮
- 或右键点击文件夹选择"添加网址"
- 输入网址后点击"获取信息"可自动填充标题和图标
-
编辑项目
- 双击文件夹或书签名称进行编辑
- 或右键选择"编辑"选项
-
删除项目
- 右键选择"删除"选项
- 或在编辑模式下批量选择删除
-
重排序
- 拖拽文件夹或书签到新位置
- 或使用右键菜单的"上移"/"下移"选项
-
移动到文件夹
- 右键选择"移动到文件夹"
- 选择目标文件夹并确认
-
批量操作
- 点击"编辑"按钮进入编辑模式
- 使用复选框选择多个项目
- 执行批量删除或移动操作
-
搜索和组织
- 通过文件夹结构组织书签
- 查看书签路径信息
- 使用搜索框按名称搜索书签
-
导入导出
- 点击顶部的"导出"按钮导出JSON格式书签
- 点击顶部的"导入"按钮导入JSON格式书签
- 选择导入模式(合并或替换)
- 选择导入目标文件夹
- 支持从Edge浏览器导入HTML格式书签
-
主题切换
- 点击右上角的主题切换按钮
- 在浅色和深色主题之间切换
- 主题设置会自动保存
-
背景设置
- 点击右上角的"背景"按钮
- 选择背景类型:默认背景、纯色背景、图片背景
- 可以上传自定义图片作为背景
- 支持调节面板透明度,让背景图片或颜色透过面板显示
- 背景设置会自动保存
-
每页显示设置
- 在网址列表上方选择每行显示的书签数量(1-6个)
- 设置会自动保存到数据库
- 换浏览器后设置依然有效
- 右键菜单:在任何项目上右键查看可用操作
- 双击编辑:双击项目名称快速编辑
- 拖拽移动:直接拖拽到目标位置
- 批量选择:使用编辑模式进行批量操作
GET /api/tree- 获取完整树结构GET /api/metadata?url=<网址>- 获取网页元数据POST /api/folders- 创建文件夹POST /api/bookmarks- 创建书签PUT /api/nodes/{id}- 更新节点DELETE /api/nodes/{id}- 删除节点POST /api/nodes/reorder- 重新排序节点POST /api/import- 导入JSON格式书签POST /api/import-edge- 导入Edge浏览器HTML格式书签GET /api/config- 获取配置(主题、背景、每页显示等)POST /api/config- 保存配置(主题、背景、每页显示等)
# 获取树结构
curl http://localhost:8901/api/tree
# 创建文件夹
curl -X POST http://localhost:8901/api/folders \
-H "Content-Type: application/json" \
-d '{"title":"工作相关","parent_id":null}'
# 创建书签
curl -X POST http://localhost:8901/api/bookmarks \
-H "Content-Type: application/json" \
-d '{"title":"GitHub","url":"https://github.com","parent_id":1}'- 数据库文件位置:可通过
-dataUrl参数指定 - 默认位置:当前目录下的
data.db - 自动创建必要的表和索引
- 默认端口:8901
- 支持静态文件服务
- 内置CORS支持
bookmarks/
├── main.go # 主程序入口
├── go.mod # Go模块定义
├── go.sum # 依赖校验
├── data.db # SQLite数据库文件(运行时生成)
├── static/ # 静态文件目录
│ ├── index.html # 主页面
│ ├── app.js # Vue.js应用
│ └── style.css # 样式文件
├── README.md # 中文说明
├── README.en.md # English README
└── techfunway.bookmarks/ # 打包相关文件
- Go 1.21+
- 现代浏览器支持(Chrome、Firefox、Safari、Edge)
# 启动开发服务器
go run main.go
# 修改前端代码后刷新浏览器即可看到效果- 可以打包成单文件可执行程序
- 支持在任何支持Go的平台上运行
- 数据文件可与程序分离,便于备份
-
端口被占用
- 检查8901端口是否被其他程序占用
- 或修改代码中的端口配置
- Docker用户可以使用自定义端口:
docker run -p 8080:8901 ...
-
数据库错误
- 确保有写入权限
- 检查磁盘空间是否充足
-
网页元数据获取失败
- 检查网络连接
- 某些网站可能限制爬虫访问
-
HTTPS站点访问失败
- 应用支持自签名证书
- 内网HTTPS站点可正常访问
-
Docker容器无法启动
- 检查Docker是否正常运行:
docker ps - 查看容器日志:
docker-compose logs -f bookmarks - 确保端口未被占用
- 检查数据目录权限
- 检查Docker是否正常运行:
-
Docker数据丢失
- 确保使用了volume挂载:
-v $(pwd)/data:/app/data - 检查宿主机data目录是否有数据
- 避免使用
docker-compose down -v(会删除数据卷)
- 确保使用了volume挂载:
-
Docker健康检查失败
- 等待容器完全启动(最多30秒)
- 检查容器日志:
docker-compose logs bookmarks - 确认应用正常运行
- 启动时会显示服务器运行端口
- 浏览器开发者工具查看前端错误
- 服务器日志显示API请求和错误信息
本项目采用MIT许可证,详见LICENSE文件。
欢迎提交Issue和Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
- 1.更新:浏览器同步插件支持同时同步多个设备,每个设备独立配置设置
- 2.新增:免登录功能(开启免登录后实际使用的是管理员数据)
- 3.新增:新增分类显示页面,支持滑动缩放图标大小
- 新增背景设置功能,支持默认背景、纯色背景、自定义图片背景
- 新增面板透明度调节功能,可调节列表和结构面板的透明度
- 新增每页显示数量保存功能,设置自动保存到数据库,跨浏览器同步
- 优化浅色主题下选中数字的显示效果
- 调整PC端列表布局高度,解决内容超出问题
- 性能优化和bug修复
- 新增导入导出功能,支持JSON格式书签的导入和导出
- 新增Edge浏览器支持,支持导入和导出Edge浏览器的HTML格式书签
- 新增主题切换功能,支持浅色和深色主题切换
- 优化了文件夹选择功能,修复了导入时无法选择文件夹的问题
- 修复了交叉编译问题,支持生成不同架构的Linux二进制文件
- 性能优化和bug修复
- 新增搜索功能,支持按网址名称搜索
- 手机端适配优化
- 性能优化和bug修复
- 初始版本发布
- 基础文件夹和书签管理功能
- 拖拽排序支持
- 批量操作功能
- 网页元数据获取
- 响应式设计,适配不同屏幕尺寸
- 现代化美观界面
- 支持内网HTTPS站点访问
- 数据存储在本地SQLite数据库文件中,不会上传到云端
- 支持定期备份数据库文件
- 建议将数据文件存储在安全位置
- 仅通过本地HTTP服务器访问,不暴露公网
- 支持内网HTTPS站点访问
- 无第三方依赖,减少安全风险
- ✅ Chrome 80+
- ✅ Firefox 75+
- ✅ Safari 13+
- ✅ Edge 80+
- 本地SQLite数据库,查询速度快
- 前端采用Vue.js 3,渲染性能优秀
- 支持大量书签和文件夹的高效管理
- 拖拽操作流畅,响应迅速
- 关闭应用程序
- 复制
data.db文件到安全位置 - 完成备份
- 关闭应用程序
- 将备份的
data.db文件复制到应用程序目录 - 启动应用程序
- 数据将自动恢复
- 支持标签功能
- 支持快捷键操作
- 支持书签预览功能
- 支持云同步功能
- 支持更多浏览器的书签导入导出
- 支持更高级的搜索功能
- 支持书签分组和智能分类
- 支持自定义主题和样式
如果您在使用过程中遇到问题或有任何建议,欢迎通过以下方式反馈:
- 创建Issue:在GitHub仓库提交Issue
- 邮件反馈:发送邮件到[[email protected]]
- 提交Pull Request:贡献代码或改进
感谢所有为本项目做出贡献的开发者和用户!
一个热爱技术的开发者,致力于创建简单易用的工具,提高工作效率。
