# EasyWayNav
**Repository Path**: MrsWF/EasyWayNav
## Basic Information
- **Project Name**: EasyWayNav
- **Description**: 高颜值自托管多用户书签导航系统,基于 Next.js 全栈开发,支持树形分组、12 套主题、拖拽排序、数据备份,可私有化部署。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: http://182.92.202.173/bujic
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-29
- **Last Updated**: 2026-06-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 导航网站, 个人导航, 开源导航, 轻量系统, 书签导航
## README
# 🧭 简途导航 (EasyWayNav)
[](https://nextjs.org/)
[](https://react.dev/)
[](https://tailwindcss.com/)
[](https://www.prisma.io/)
[](https://www.mysql.com/)
**简途导航 (EasyWayNav)** 是一款基于 Next.js Fullstack (App Router) + TailwindCSS v4 + MySQL 开发的高颜值、自托管、多用户的网站导航与书签管理系统。
🌐 **[在线体验 Demo](http://182.92.202.173/bujic)** | 👤 账号: `test` / 密码: `123456`
---
## ✨ 核心特性
- 🎨 **高颜值视觉设计**:12 套主题,磨砂玻璃质感与响应式布局
- 🔄 **双展示模式**:网站卡片导航 + 网页书签列表
- 🌳 **多级分组(树形结构)**:最多 5 层嵌套,侧栏/主内容区独立折叠
- 🖱️ **拖拽排序**、🔍 **搜索引擎**、🕷️ **一键抓取元数据**
- 📦 **JSON 备份与恢复**(含 `parentId` 树形关系)
- 👥 **多用户与权限管理**
详细分组说明见 [docs/architecture.md#分组树形结构](docs/architecture.md#分组树形结构)。
---
## 📸 界面预览
> 截图存放于 [docs/images/](docs/images/),详见该目录说明。
**登录页**
**收藏导航**
**书签列表**
**设置 / 主题**
**首次登录** 会弹出 5 步引导:改密提示 → 导入/添加书签 → 选择主题 → 开始使用。
---
## 🛠️ 技术栈
- **前端**:Next.js 16 (App Router) & React 19
- **样式**:TailwindCSS v4
- **数据库**:Prisma & MySQL 8
- **认证**:JWT (`jose`)
---
## 🚀 本地开发
### 1. 环境准备
- Node.js 18+ / 20+
- pnpm
- MySQL 8(本地或远程)
### 2. 安装与配置
```bash
cd app
pnpm install
cp .env.example .env # 编辑 DATABASE_URL、ENCRYPT_KEY、JWT_SECRET
```
### 3. 初始化数据库
```bash
pnpm db:setup # db push + seed 样例数据
```
默认管理员:**admin** / **admin**
### 4. 启动
```bash
pnpm dev
```
访问 [http://localhost:3000](http://localhost:3000)
更多开发说明见 [docs/development.md](docs/development.md)。
---
## 🚢 生产部署(PM2 + Nginx)
生产环境通过 **`http:///bujic/`** 子路径访问。完整步骤见:
- [docs/deployment.md](docs/deployment.md)
- [docs/architecture.md](docs/architecture.md)
部署文件位于 `deploy/`:
| 文件 | 说明 |
|------|------|
| `deploy/mysql-init.sql` | 建库与用户 |
| `deploy/ecosystem.config.cjs` | PM2 配置(端口 3002) |
| `deploy/deploy.sh` | 拉代码、构建、同步 static、PM2 重载 |
| `deploy/nginx/easywaynav.conf` | Nginx 反向代理片段 |
生产 `.env` 关键项:
```env
DATABASE_URL="mysql://easywaynav:<密码>@127.0.0.1:3306/EasyWayNav"
NEXT_PUBLIC_BASE_PATH=/bujic
JWT_SECRET=<随机长字符串>
ENCRYPT_KEY=<64位十六进制>
DATA_DIR="/opt/EasyWayNav/app/data"
PORT=3002
```
### 备份导入
1. Dashboard 导出 JSON 备份
2. 目标环境 `pnpm db:push`
3. `pnpm db:import -- backup.json --clear` 或登录后 UI 导入
4. `rsync` 上传文件目录 `app/data/uploads/`
---
## 📁 项目结构
```text
EasyWayNav/
├── app/ # Next.js 应用
│ ├── prisma/ # Schema 与 seed
│ ├── scripts/ # prisma.js、import-backup.ts
│ └── src/ # 页面、组件、Server Actions
├── docs/ # 项目文档
├── deploy/ # PM2 / Nginx / MySQL 脚本
├── README.md
├── CONTRIBUTING.md
├── SECURITY.md
└── CHANGELOG.md
```
---
## 📚 文档
完整文档索引见 **[docs/README.md](docs/README.md)**。
| 文档 | 说明 |
|------|------|
| [docs/user-manual.md](docs/user-manual.md) | **操作手册**(日常使用) |
| [docs/open-source-checklist.md](docs/open-source-checklist.md) | 开源就绪自检清单 |
| [docs/development.md](docs/development.md) | 开发指南 |
| [docs/architecture.md](docs/architecture.md) | 系统架构与分组树 |
| [docs/deployment.md](docs/deployment.md) | 生产部署 |
| [docs/troubleshooting.md](docs/troubleshooting.md) | 常见问题 |
---
## 🔒 安全说明
- 登录密码等敏感字段经 **AES-256-GCM** 客户端加密传输(`ENCRYPT_KEY`)
- 生产环境必须配置 `JWT_SECRET` 与 `ENCRYPT_KEY`
- `/uploads` 路由含目录穿越防护
漏洞报告见 [SECURITY.md](SECURITY.md)。
---
## 🤝 贡献
欢迎贡献!请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。
---
## 📄 开源协议
[MIT License](LICENSE)