现代化导航管理平台 | Modern Navigation Management Platform
NavSphere 是一个基于 Next.js 14 构建的现代化导航管理平台,专为个人和团队打造的书签管理和导航门户解决方案。通过 GitHub 作为数据存储后端,提供安全、可靠的导航数据管理体验。[手把手快速部署教程]
| 技术栈 | 版本 | 用途 |
|---|---|---|
| Next.js | 14.0.4 | React 全栈框架 |
| React | 18.2.0 | 用户界面库 |
| TypeScript | 5.1.6 | 类型安全的 JavaScript |
| Tailwind CSS | 3.3.3 | 原子化 CSS 框架 |
| NextAuth.js | 5.0.0-beta.25 | 身份认证解决方案 |
| Radix UI | Latest | 无障碍 UI 组件库 |
| Lucide React | 0.462.0 | 现代图标库 |
| React Query | 5.61.5 | 数据获取和状态管理 |
| React Hook Form | 7.53.2 | 表单处理 |
| Zod | 3.22.4 | 数据验证 |
点击上方按钮即可一键部署到 Vercel,部署完成后需要配置环境变量。
git clone https://github.com/tianyaxiang/NavSphere.git
cd NavSphere
pnpm install
cp .env.example .env.local
pnpm dev
访问应用
打开浏览器访问 http://localhost:3000
创建 .env.local 文件并配置以下变量:
# GitHub OAuth App 配置
GITHUB_ID=your-github-client-id
GITHUB_SECRET=your-github-client-secret
# GitHub 仓库配置
GITHUB_OWNER=your-github-username
GITHUB_REPO=your-repo-name
GITHUB_BRANCH=main
# NextAuth 配置
NEXTAUTH_URL=http://localhost:3000/api/auth
NEXT_PUBLIC_API_URL=http://localhost:3000
创建 OAuth App
Application name: NavSphere
Homepage URL: http://localhost:3000
Authorization callback URL: http://localhost:3000/api/auth/callback/github
获取凭据
创建数据仓库
navsphere-data初始化数据文件
项目会自动创建以下数据文件:
navigation.json - 导航数据site.json - 站点配置resources.json - 资源数据在使用一键部署功能前,请确保完成以下准备工作:
点击部署按钮
配置环境变量
在部署过程中,Vercel 会要求你配置以下环境变量:
GITHUB_ID=your-github-client-id
GITHUB_SECRET=your-github-client-secret
GITHUB_OWNER=your-github-username
GITHUB_REPO=your-data-repo-name
GITHUB_BRANCH=main
NEXTAUTH_URL=https://your-project-name.vercel.app/api/auth
NEXT_PUBLIC_API_URL=https://your-project-name.vercel.app
更新 OAuth 回调地址
部署完成后,需要在 GitHub OAuth App 设置中更新回调地址:
https://your-project-name.vercel.app/api/auth/callback/github
Fork 项目到你的 GitHub
连接 Vercel
配置环境变量
在 Vercel 项目设置中添加环境变量(同上)
部署
Vercel 会自动检测 Next.js 项目并进行部署
创建项目
构建设置
在 Cloudflare Pages 项目设置中配置:
# 构建命令
npx @cloudflare/next-on-pages@1
# 输出目录
.vercel/output/static
# Node.js 版本
18.17.0
环境变量配置
在 Cloudflare Pages 环境变量中添加:
GITHUB_ID=your-github-client-id
GITHUB_SECRET=your-github-client-secret
GITHUB_OWNER=your-github-username
GITHUB_REPO=your-repo-name
GITHUB_BRANCH=main
NEXTAUTH_URL=https://your-domain.pages.dev/api/auth
NEXT_PUBLIC_API_URL=https://your-domain.pages.dev
兼容性设置
项目已包含 wrangler.toml 配置文件,确保 Cloudflare Pages 兼容性。
项目支持 Docker 容器化部署,适合自托管环境。
git clone https://github.com/tianyaxiang/NavSphere.git
cd NavSphere
cp .env.example .env.local
# 编辑 .env.local 文件,配置必要的环境变量
docker build -f docker/Dockerfile -t navsphere:latest .
# 开发环境
docker-compose -f docker/docker-compose.yml up -d
# 生产环境
docker-compose -f docker/docker-compose.prod.yml up -d
# 查看容器状态
docker-compose -f docker/docker-compose.yml ps
# 查看日志
docker-compose -f docker/docker-compose.yml logs -f
# 停止服务
docker-compose -f docker/docker-compose.yml down
.env.local 文件注入/api/health项目使用 GitHub 仓库存储数据,自动创建以下文件:
| 文件 | 用途 | 位置 |
|---|---|---|
navigation.json | 导航数据 | 数据仓库根目录 |
site.json | 站点配置 | 数据仓库根目录 |
resources.json | 资源数据 | 数据仓库根目录 |
[
{
"id": "dev-tools",
"title": "开发工具",
"icon": "🛠️",
"items": [
{
"title": "GitHub",
"titleEn": "GitHub",
"description": "代码托管平台",
"descriptionEn": "Code hosting platform",
"icon": "https://github.com/favicon.ico",
"href": "https://github.com"
}
],
"subCategories": [
{
"id": "frontend",
"title": "前端工具",
"items": []
}
]
}
]
{
"basic": {
"title": "NavSphere",
"description": "现代化导航管理平台",
"keywords": "导航,书签,管理"
},
"appearance": {
"logo": "/logo.png",
"favicon": "/favicon.ico",
"theme": "system"
}
}
# 开发模式
pnpm dev
# 构建项目
pnpm build
# 启动生产服务器
pnpm start
# 代码检查
pnpm lint
# 清理构建文件
pnpm clean
NavSphere/
├── app/ # Next.js App Router
│ ├── api/ # API 路由
│ ├── components/ # 页面组件
│ ├── globals.css # 全局样式
│ └── layout.tsx # 根布局
├── components/ # 共享组件
├── lib/ # 工具函数
├── public/ # 静态资源
├── styles/ # 样式文件
└── types/ # TypeScript 类型定义
问题: GitHub OAuth 登录失败
解决方案:
GITHUB_ID 和 GITHUB_SECRET 是否正确问题: 导航数据无法加载
解决方案:
问题: 项目构建或部署失败
解决方案:
rm -rf node_modules pnpm-lock.yaml && pnpm install问题: Vercel 部署失败或运行异常
解决方案:
https://your-app.vercel.app)vercel.json 中的 maxDuration 设置问题: Cloudflare Pages 部署失败或运行异常
解决方案:
npx @cloudflare/next-on-pages@1 作为构建命令.vercel/output/staticwrangler.toml 文件包含正确的兼容性设置如果这个项目对你有帮助,欢迎支持我们的开发工作!
扫码支持 | 您的支持是我们持续开发的动力
我们欢迎所有形式的贡献!
git checkout -b feature/amazing-featuregit commit -m 'Add amazing feature'git push origin feature/amazing-feature本项目基于 MIT License 开源协议。
⭐ 如果这个项目对你有帮助,请给我们一个 Star!