# 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) [![Next.js](https://img.shields.io/badge/Next.js-16.2.9-black?style=flat-square&logo=next.js)](https://nextjs.org/) [![React](https://img.shields.io/badge/React-19.0.0-blue?style=flat-square&logo=react)](https://react.dev/) [![TailwindCSS](https://img.shields.io/badge/TailwindCSS-v4-38bdf8?style=flat-square&logo=tailwind-css)](https://tailwindcss.com/) [![Prisma](https://img.shields.io/badge/Prisma-6.19.3-0c344b?style=flat-square&logo=prisma)](https://www.prisma.io/) [![MySQL](https://img.shields.io/badge/MySQL-8-4479a1?style=flat-square&logo=mysql)](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)