🚀 一个优雅、现代化的网站导航管理系统,让你的书签收藏井然有序
NaviHive 是基于 Cloudflare Workers 构建的轻量级导航站点,完美替代浏览器书签栏。它提供直观的可视化管理界面,支持分组分类、拖拽排序、暗色模式等实用功能,让你的常用网站触手可及。零成本部署,秒级访问,随时随地管理你的网络世界入口。
立即体验 NaviHive 的所有功能:在线演示站点
👤 演示账号:admin
🔑 演示密码:NaviHive2025!
💡 提示:演示站数据会定期重置,请勿保存重要信息
- 📚 智能分组 - 按类别组织网站,支持无限分组和嵌套管理
- 🔄 拖拽排序 - 可视化调整分组和网站顺序,所见即所得
- 🎨 高度自定义 - 自定义标题、Logo、背景图、CSS 样式,打造专属导航站
- 📤 数据导入导出 - 一键备份恢复,支持 JSON 格式数据迁移
- 🔒 企业级认证 - JWT + bcrypt 加密,HttpOnly Cookie 防 XSS
- 👤 访问控制 - 内置用户认证系统,保护你的私密数据
- 🛡️ 安全防护 - SQL 注入防护、SSRF 防护、请求体大小限制
- 🌓 主题切换 - 深色/浅色模式自由切换,呵护双眼
- 📱 完美响应式 - 从桌面到移动端,各种屏幕完美适配
- ⚡ 极致性能 - Cloudflare 全球 CDN 加速,毫秒级响应
- 🎯 零成本部署 - 基于 Cloudflare Workers 免费套餐,永久免费使用
- ⚛️ React 19 - 最新版本,极致性能
- 📘 TypeScript 5.7 - 类型安全,智能提示
- 🎨 Material UI 7.0 - Google 设计语言,开箱即用
- 🎪 DND Kit - 流畅的拖拽交互体验
- 🌊 Tailwind CSS 4.1 - 原子化 CSS,快速开发
- ⚡ Vite 6 - 极速构建工具,毫秒级 HMR
- ☁️ Cloudflare Workers - 边缘计算,全球部署
- 🗄️ Cloudflare D1 - 分布式 SQLite 数据库
- 🔐 JWT + bcrypt - 工业级身份认证
- 🛡️ TypeScript Strict Mode - 全栈类型安全
- 📦 pnpm - 高效的包管理器
- 🔨 Wrangler CLI - Cloudflare 官方开发工具
- 🎯 ESLint + Prettier - 代码质量保障
NaviHive 提供两种部署方案,请根据您的技术背景选择合适的方式。
适合不熟悉编程的用户,通过网页界面完成全部部署流程,无需安装任何开发工具。
- 注册一个免费的 Cloudflare 账号
- 注册一个 GitHub 账号(用于 fork 项目)
- 访问本项目的 GitHub 页面
- 点击右上角的 Fork 按钮,将项目复制到你的账号下
- 在你 fork 的项目页面,点击顶部的 Deploy to Cloudflare Workers 按钮
- 登录你的 Cloudflare 账号
- 授权 GitHub 访问权限
- 系统会自动开始部署流程
如果一键部署按钮无法使用,可以直接进入第三步手动创建。
- 登录 Cloudflare 控制台
- 在左侧菜单选择 Workers & Pages
- 点击右侧的 D1 SQL Database 标签
- 点击 Create database 按钮
- 输入数据库名称:
navigation-db - 点击 Create 完成创建
- 记下数据库 ID(格式类似:
43ff28e1-42d6-4e53-9657-0702ae1353b6)
- 在 Cloudflare 控制台,进入 Workers & Pages
- 如果已通过一键部署创建了 Worker,选择该项目;否则点击 Create Application > Create Worker
- 进入项目后,点击 Settings > Variables
- 添加以下环境变量:
| 变量名 | 值 | 说明 |
|---|---|---|
AUTH_ENABLED |
true |
启用登录认证 |
AUTH_USERNAME |
admin |
管理员用户名(可自定义) |
AUTH_PASSWORD |
见下方说明 | 管理员密码(bcrypt 哈希) |
AUTH_SECRET |
见下方说明 | JWT 密钥(随机字符串) |
设置密码(重要):
- 访问 bcrypt 在线生成器 或使用 Bcrypt Generator
- 输入你想要的密码,选择 10 rounds
- 复制生成的哈希值(格式类似:
$2b$10$abc123...) - 粘贴到
AUTH_PASSWORD变量中
设置 JWT 密钥:
- 访问 随机字符串生成器
- 生成一个 32 位以上的随机字符串
- 粘贴到
AUTH_SECRET变量中
- 点击 Settings > Bindings > Add binding
- 选择 D1 database,Variable name 填写
DB,选择刚才创建的navigation-db
- 在 Cloudflare 控制台,进入 D1 Databases
- 点击
navigation-db数据库 - 选择 Console 标签
- 复制以下 SQL 命令并执行(点击 Execute):
-- 创建分组表
CREATE TABLE IF NOT EXISTS groups (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
order_num INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建站点表
CREATE TABLE IF NOT EXISTS sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
group_id INTEGER NOT NULL,
name TEXT NOT NULL,
url TEXT NOT NULL,
icon TEXT,
description TEXT,
notes TEXT,
order_num INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (group_id) REFERENCES groups(id) ON DELETE CASCADE
);
-- 创建配置表
CREATE TABLE IF NOT EXISTS configs (
key TEXT PRIMARY KEY,
value TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 标记数据库已初始化
INSERT INTO configs (key, value) VALUES ('DB_INITIALIZED', 'true');- 确认每条命令都执行成功(显示 ✓ Success)
- 返回 Workers & Pages,找到你的项目
- 复制项目的访问地址(格式:
https://your-project.username.workers.dev) - 在浏览器中打开该地址
- 使用你设置的用户名和密码登录
🎉 恭喜!你的 NaviHive 导航站已经部署成功!
适合熟悉命令行和 Git 操作的开发者,可以本地开发调试后再部署。
- Node.js 18+ 或 20+
- pnpm 9+(推荐)或 npm
- Git
- Cloudflare 账号
git clone https://github.com/zqq-nuli/Cloudflare-Navihive.git
cd Cloudflare-Navihivepnpm install
# 或
npm install# 安装 Wrangler(如果还没安装)
npm install -g wrangler
# 登录 Cloudflare
wrangler login浏览器会自动打开,授权后返回终端。
wrangler d1 create navigation-db执行后会返回数据库信息,记下 database_id:
✅ Successfully created DB 'navigation-db'!
[[d1_databases]]
binding = "DB"
database_name = "navigation-db"
database_id = "43ff28e1-42d6-4e53-9657-0702ae1353b6" # 这是你的数据库 ID
编辑项目根目录的 wrangler.jsonc 文件:
项目内置了密码哈希生成工具:
pnpm hash-password YourSecurePassword123输出示例:
正在生成密码哈希...
生成的密码哈希:
$2b$10$awC3.nc/XrxkAf6BbEbf.O1YqFUFIUIsbmgQL3pstjjYZpXfFtSGi
请将此哈希值设置为 AUTH_PASSWORD 环境变量
将生成的哈希值复制到 wrangler.jsonc 的 AUTH_PASSWORD 字段。
在终端执行以下命令生成随机密钥:
# macOS/Linux
openssl rand -hex 32
# Windows (PowerShell)
[System.Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))
# 或使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"将生成的字符串复制到 wrangler.jsonc 的 AUTH_SECRET 字段。
wrangler d1 execute navigation-db --file=schema.sql如果没有 schema.sql 文件,可以直接执行:
wrangler d1 execute navigation-db --command="CREATE TABLE IF NOT EXISTS groups (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, order_num INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);"
wrangler d1 execute navigation-db --command="CREATE TABLE IF NOT EXISTS sites (id INTEGER PRIMARY KEY AUTOINCREMENT, group_id INTEGER NOT NULL, name TEXT NOT NULL, url TEXT NOT NULL, icon TEXT, description TEXT, notes TEXT, order_num INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (group_id) REFERENCES groups(id) ON DELETE CASCADE);"
wrangler d1 execute navigation-db --command="CREATE TABLE IF NOT EXISTS configs (key TEXT PRIMARY KEY, value TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);"
wrangler d1 execute navigation-db --command="INSERT INTO configs (key, value) VALUES ('DB_INITIALIZED', 'true');"pnpm dev访问 http://localhost:5173 进行本地测试。
注意:本地开发默认使用 Mock 数据,如需测试真实 API,设置环境变量
VITE_USE_REAL_API=true。
pnpm run deploy
# 或
npm run deploy部署成功后,终端会显示访问地址:
Deployed navihive triggers (0.37 sec)
https://navihive.your-username.workers.dev
Current Version ID: fe495e75-cc21-4a02-81d2-f14a4850c134
# 本地开发
pnpm dev
# 构建项目
pnpm build
# 部署到 Cloudflare
pnpm run deploy
# 生成密码哈希
pnpm hash-password <your-password>
# 查看 Cloudflare 日志
wrangler tail
# 导出数据库
wrangler d1 export navigation-db
# 查询数据库
wrangler d1 execute navigation-db --command="SELECT * FROM groups"- 在 Cloudflare 控制台,进入 Workers & Pages
- 选择你的项目,点击 Settings > Triggers
- 在 Custom Domains 部分点击 Add Custom Domain
- 输入域名并完成 DNS 验证
# 导出整个数据库
wrangler d1 export navigation-db
# 导出为 JSON(通过 Web 界面)
# 登录后点击"网站设置" > "导出数据"# 从 SQL 文件导入
wrangler d1 execute navigation-db --file=backup.sql
# 通过 Web 界面导入 JSON
# 登录后点击"网站设置" > "导入数据"首次访问导航站时,使用部署时设置的管理员账号登录:
- 在登录页面输入用户名和密码
- 可选择"记住我"延长登录时效(30 天)
- 登录成功后,系统会自动跳转到导航主页
- 点击页面顶部的 "新增分组" 按钮
- 输入分组名称(如"常用工具"、"开发资源"等)
- 点击确认完成创建
- 在对应分组中点击 "添加卡片" 按钮
- 填写网站信息:
- 名称:网站显示名称
- URL:网站完整地址(必须包含
https://) - 图标(可选):网站 Logo 图片地址
- 描述(可选):网站简介
- 备注(可选):个人笔记
- 点击 "保存" 完成添加
点击右上角的 "网站设置" 按钮,可以配置:
- 网站标题:浏览器标签页显示的标题
- 网站名称:导航站顶部显示的名称
- 背景图片:设置页面背景(支持图片 URL)
- 蒙版透明度:调整背景图片的可见度
- 自定义 CSS:注入自定义样式代码
- 点击 "编辑排序" 按钮进入排序模式
- 拖拽分组或网站卡片调整位置
- 点击 "保存排序" 应用更改
- 导出数据:在"网站设置"中点击"导出数据",下载 JSON 备份文件
- 导入数据:点击"导入数据"选择 JSON 文件,系统会智能合并数据
想要使用自己的域名而非 .workers.dev 子域名?按照以下步骤配置:
- 登录 Cloudflare 控制台
- 导航至 Workers & Pages > 选择你的项目
- 点击 Settings > Triggers 标签
- 在 Custom Domains 区域点击 Add Custom Domain
- 输入你的域名(如
nav.yourdomain.com) - Cloudflare 会自动配置 DNS 记录,无需手动操作
- 等待 1-3 分钟,SSL 证书自动签发完成
✅ 完成后,你可以通过自定义域名访问导航站!
Q: 我忘记了管理员密码,怎么办?
A: 有两种方法重置密码:
方法一:通过 Cloudflare 控制台
- 在本地生成新密码哈希(如果没有本地环境,使用 bcrypt 在线生成器)
- 登录 Cloudflare 控制台
- 进入 Workers & Pages > 选择你的项目
- 点击 Settings > Variables
- 修改
AUTH_PASSWORD变量为新的哈希值 - 点击 Save 保存(系统会自动重新部署)
方法二:通过命令行(开发者)
# 生成新密码哈希
pnpm hash-password NewPassword123
# 编辑 wrangler.jsonc,更新 AUTH_PASSWORD 值
# 重新部署
pnpm run deployQ: 我想关闭登录认证,可以吗?
A: 可以。在环境变量中将 AUTH_ENABLED 设置为 false 即可。
Q: 部署后访问网站显示 "请先登录",但我还没设置数据库?
A: 这是正常现象。请按照部署指南完成数据库初始化步骤(执行 SQL 创建表结构),然后刷新页面即可登录。
Q: 部署时提示 "No such module 'crypto'" 错误?
A: 这是因为缺少 Node.js 兼容性标志。请在 wrangler.jsonc 中添加:
{
"compatibility_flags": ["nodejs_compat"]
}然后重新部署即可。
Q: 如何更新到最新版本?
小白用户:
- 进入你 fork 的 GitHub 仓库
- 点击 Sync fork > Update branch
- 在 Cloudflare 控制台重新部署(如果使用了 GitHub 集成,会自动部署)
开发者:
# 拉取最新代码
git pull origin main
# 重新部署
pnpm run deployQ: 一键部署按钮无法使用?
A: 一键部署功能需要 Cloudflare Workers 和 GitHub 的集成支持。如果无法使用,建议:
- 小白用户:按照"方案一"的步骤 3-6 手动创建
- 开发者:直接使用"方案二"命令行部署
Q: 如何备份我的导航数据?
方法一:通过 Web 界面(推荐)
- 登录你的导航站
- 点击右上角的"网站设置"按钮
- 点击"导出数据"按钮
- 保存下载的 JSON 文件
方法二:通过命令行(开发者)
wrangler d1 export navigation-dbQ: 如何导入数据?
- 登录你的导航站
- 点击"网站设置" > "导入数据"
- 选择之前导出的 JSON 文件
- 确认导入(会自动合并数据,不会覆盖现有数据)
Q: 数据库结构是什么?如何直接操作数据?
NaviHive 使用三个主要表:
-- 分组表
groups (id, name, order_num, created_at, updated_at)
-- 网站表
sites (id, group_id, name, url, icon, description, notes, order_num, created_at, updated_at)
-- 配置表
configs (key, value, created_at, updated_at)通过 Cloudflare 控制台 > D1 Databases > Console 可以直接执行 SQL 查询。
Q: 导入数据时提示 "无效的 JSON 格式" 怎么办?
A: 请确保:
- JSON 文件是通过本系统导出的(格式兼容)
- 文件没有被修改或损坏
- 文件编码为 UTF-8
- 文件大小不超过 1MB
Q: 如何使用自定义域名?
- 登录 Cloudflare 控制台
- 进入 Workers & Pages > 选择你的项目
- 点击 Settings > Triggers
- 在 Custom Domains 部分点击 Add Custom Domain
- 输入你的域名(例如:nav.example.com)
- 按照提示完成 DNS 配置(Cloudflare 会自动添加 DNS 记录)
- 等待几分钟生效
Q: 如何自定义网站样式(CSS)?
- 登录你的导航站
- 点击"网站设置"
- 在"自定义 CSS"文本框中输入你的 CSS 代码
- 点击"保存"
示例:
/* 修改背景颜色 */
body {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
/* 修改卡片样式 */
.MuiCard-root {
border-radius: 16px !important;
box-shadow: 0 8px 32px rgba(0,0,0,0.1) !important;
}Q: 拖拽排序后没有保存成功?
A: 请确保:
- 点击了"保存排序"按钮
- 等待保存成功提示(不要立即关闭页面)
- 检查浏览器控制台是否有错误信息
- 确认已登录且 Token 未过期
Q: 网站图标 (icon) 不显示?
A: 可能的原因:
- URL 格式错误:确保 icon 字段填写的是完整的图片 URL(如
https://example.com/logo.png) - CORS 限制:某些网站不允许跨域访问图片
- 使用相对路径:如果图标在本地,需要上传到图床后使用绝对路径
- 推荐方案:使用网站的 favicon(如
https://example.com/favicon.ico)
Q: 如何设置背景图片?
- 登录你的导航站
- 点击"网站设置"
- 在"背景图片 URL"中填入图片地址
- 调整"蒙版透明度"以控制背景的可见度
- 点击"保存"
Q: 密码安全吗?会被破解吗?
A: NaviHive 使用了多层安全措施:
- 密码使用 bcrypt 哈希加密(10 轮盐值),几乎无法暴力破解
- JWT Token 有效期限制(7 天或 30 天)
- 所有 API 请求都需要身份验证
- Token 存储在 HttpOnly Cookie 中,防止 XSS 攻击
只要你的密码足够复杂(建议 12 位以上,包含大小写字母、数字和特殊字符),就非常安全。
Q: 我可以禁用 HTTPS 吗?
A: 不可以。Cloudflare Workers 强制使用 HTTPS,这是为了保证你的数据传输安全。
Q: 其他人能访问我的导航站吗?
A:
- 未登录用户:只能看到登录页面,无法访问任何数据
- 已登录用户:可以完全控制导航站(增删改查)
- 建议:不要分享你的登录凭证;如需多人协作,考虑为每个人创建独立账号(需要修改代码)
Q: Cloudflare Workers 免费版有什么限制?
A: 免费版限制:
- 每天 100,000 次请求
- CPU 时间:10ms/请求
- D1 数据库:每天 100,000 次读取,1,000 次写入
- 存储空间:500MB
对于个人导航站来说,这些限制绰绰有余。
Q: 我可以导入多少个网站?
A: 理论上没有限制,但实际受限于:
- D1 数据库大小(免费版 500MB)
- 单个导入文件大小(1MB)
- 浏览器性能(过多网站可能导致页面卡顿)
建议每个分组不超过 20 个网站,总数不超过 500 个。
Q: 如何查看部署日志和错误信息?
通过 Cloudflare 控制台:
- 进入 Workers & Pages > 选择你的项目
- 点击 Logs 标签
- 查看实时日志
通过命令行(开发者):
wrangler tailQ: 我能修改代码吗?可以商用吗?
A: 可以!NaviHive 采用 MIT 开源许可证,你可以:
- ✅ 自由修改代码
- ✅ 商业使用
- ✅ 二次开发
- ✅ 分发和销售
⚠️ 但需保留原作者版权声明
Q: 遇到其他问题怎么办?
- 查看项目的 Issues 页面
- 搜索是否有人遇到过类似问题
- 如果没有,创建新 Issue 并详细描述问题(包括错误信息、操作步骤、浏览器版本等)
Cloudflare-Navihive/
├── worker/ # Cloudflare Workers 后端
│ └── index.ts # Workers 入口文件,API 路由定义
├── src/ # React 前端源码
│ ├── API/ # API 客户端层
│ │ ├── client.ts # 真实 HTTP 客户端
│ │ ├── mock.ts # Mock 客户端(开发用)
│ │ └── http.ts # 类型定义和服务端 API
│ ├── components/ # React 组件
│ │ ├── GroupCard.tsx # 分组卡片组件
│ │ ├── SiteCard.tsx # 网站卡片组件
│ │ ├── LoginForm.tsx # 登录表单
│ │ ├── SortableGroupItem.tsx # 可拖拽分组
│ │ ├── SiteSettingsModal.tsx # 全局设置弹窗
│ │ └── ThemeToggle.tsx # 主题切换按钮
│ ├── App.tsx # 主应用组件
│ └── main.tsx # 应用入口
├── public/ # 静态资源
├── scripts/ # 工具脚本
│ └── hash-password.ts # 密码哈希生成工具
├── wrangler.jsonc # Cloudflare Workers 配置
├── vite.config.ts # Vite 构建配置
├── tsconfig.json # TypeScript 配置
├── tailwind.config.js # Tailwind CSS 配置
└── package.json # 项目依赖和脚本
| 文件 | 作用 |
|---|---|
worker/index.ts |
后端 API 路由,数据库操作,身份认证 |
src/App.tsx |
前端主组件,状态管理,布局渲染 |
src/API/client.ts |
API 客户端,处理所有 HTTP 请求 |
wrangler.jsonc |
Workers 配置,环境变量,D1 绑定 |
vite.config.ts |
前端构建配置,开发服务器设置 |
欢迎所有形式的贡献!无论是报告 Bug、提出新功能建议,还是提交代码改进。
- Fork 本仓库 到你的 GitHub 账号
- 克隆到本地:
git clone https://github.com/your-username/Cloudflare-Navihive.git - 创建特性分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'feat: 添加某个很棒的功能' - 推送到分支:
git push origin feature/amazing-feature - 提交 Pull Request,描述你的更改内容
请遵循 Conventional Commits 规范:
feat:新功能fix:Bug 修复docs:文档更新style:代码格式调整(不影响功能)refactor:代码重构perf:性能优化test:测试相关chore:构建工具或辅助工具的变动
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 运行代码检查
pnpm lint
# 格式化代码
pnpm format本项目基于 MIT License 开源协议发布。
这意味着你可以:
- ✅ 自由使用、修改和分发本项目
- ✅ 用于商业用途
- ✅ 私有化部署
⚠️ 但需保留原作者版权声明
详见 LICENSE 文件。
感谢以下开源项目和服务,让 NaviHive 成为可能:
- React - 用户界面构建库
- TypeScript - JavaScript 超集
- Vite - 下一代前端构建工具
- Material UI - React 组件库
- DND Kit - 拖拽交互工具
- Tailwind CSS - 原子化 CSS 框架
- Cloudflare Workers - 边缘计算平台
- Cloudflare D1 - 分布式数据库
- Claude Code - AI 辅助开发
- Cursor - AI 代码编辑器
感谢所有提交 Issue、PR 和 Star 的开发者们!🌟
- 🔐 [CR-001] 实现 JWT 签名(Web Crypto API + HMAC-SHA256)
- 🛡️ [CR-003] XSS 防护(CSS 代码沙箱化,移除危险模式)
- 🚫 [CR-004] SSRF 防护(私有 IP 地址过滤)
- 💉 [CR-002] SQL 注入防护(参数化查询)
- 🍪 [HS-001] HttpOnly Cookie(防止 XSS 窃取 Token)
- 🔒 [HS-003] bcrypt 密码哈希(10 轮盐值加密)
- 🌐 [HS-004] CORS 白名单配置
- 🆔 [HS-005] 结构化错误日志(唯一错误 ID)
- ✅ [MS-001] TypeScript 严格模式(修复 65+ 类型错误)
- 📦 [MS-005] 请求体大小限制(最大 1MB)
- 🧪 [MS-007] 深度数据验证(导入操作)
📝 共计 10 次安全提交,全面提升系统安全性
- ✨ 新增"记住我"登录功能,可选 30 天长效 Token
- 🐛 修复 URL 正则表达式转义字符问题
- 🔐 优化 Token 过期时间管理机制
- 🖼️ 增加背景图片设置功能
- 🎨 新增蒙版透明度调节功能
- 🐛 修复导入数据时自定义样式为空的报错问题
- 🐛 修复导入数据产生重复数据的 Bug
- 🐛 修复无卡片时排序无法保存的问题
- ✨ 新增导入数据智能合并功能(按 URL 匹配)
- ✨ 新增分组折叠展开功能
- 🔄 更新 Chrome 浏览器标签数据转换工具
- 🚀 首次正式发布
- ✨ 完整的导航站功能实现
- 📚 分组管理与拖拽排序
- 🔐 JWT 用户认证系统
- 🌓 深色/浅色主题切换
- 📱 完全响应式设计
- 🎨 自定义 CSS 样式支持
如果 NaviHive 对你有帮助,欢迎通过以下方式支持:
- 点击右上角的 ⭐ Star 按钮,这是对开发者最大的鼓励
- Fork 项目,参与改进和定制
- 分享给你的朋友和同事
你的赞赏将用于项目的持续开发和维护:
- 💬 提交有价值的 Issue 和 Feature Request
- 📝 改进文档和教程
- 🐛 报告 Bug 并提供复现步骤
- 💻 贡献代码(欢迎提交 PR)







{ "$schema": "node_modules/wrangler/config-schema.json", "name": "navihive", // 可自定义项目名称 "main": "worker/index.ts", "compatibility_date": "2025-04-05", "compatibility_flags": ["nodejs_compat"], // 必须启用 Node.js 兼容 "assets": { "not_found_handling": "single-page-application" }, "observability": { "enabled": true }, "d1_databases": [ { "binding": "DB", "database_name": "navigation-db", "database_id": "你的数据库ID" // 替换为第4步获得的 database_id } ], "vars": { "AUTH_ENABLED": "true", "AUTH_USERNAME": "admin", // 自定义管理员用户名 "AUTH_PASSWORD": "见下方说明", // bcrypt 哈希值 "AUTH_SECRET": "见下方说明" // 32位随机字符串 } }