一个支持 公共导航 与 私有导航 的导航站项目。
目前项目采用前后端分离结构:
- 前端:
Vue 3 + Vite + Pinia + Vue Router - 后端:
Node.js + Express + MySQL
适合做个人导航站、带账号体系的收藏入口页,或者继续扩展成可配置的导航管理系统。
当前已经完成的能力包括:
- 用户注册
- 用户登录
- 获取当前登录用户信息
- 退出登录
- 用户资料修改
- 用户密码修改
- 用户头像上传
- 用户个人设置保存
- 导航分组 CRUD
- 导航链接 CRUD
- 区分公共导航与私有导航
- 首页支持展示公共导航 / 私有导航
- 管理员账号初始化
- 管理员登录后跳转管理页
- 普通用户登录后跳转首页
- 搜索引擎配置管理
- 支持启用 / 停用
- 支持前台可用列表与后台全量管理列表分离
E:\daohang
├─ web/ # 前端项目(Vue 3)
├─ backend/ # 后端项目(Express + MySQL)
├─ README.md # 根目录项目说明
├─ .gitignore
└─ .gitattributes
web/src/views/:页面视图web/src/stores/:Pinia 状态管理web/src/router.js:前端路由web/src/api.js:接口请求封装
backend/src/routes/:接口路由backend/src/services/:业务服务backend/src/config/:数据库配置backend/sql/:数据库初始化 SQLbackend/docs/:数据库设计说明
- Vue 3
- Vite
- Pinia
- Vue Router
- Node.js
- Express
- MySQL 8+
- mysql2
- bcryptjs
- dotenv
- multer
建议环境:
- Node.js 18+(更高版本也可)
- MySQL 8+
git clone https://github.com/fenglbl/daohang.git
cd daohang分别安装前后端依赖:
cd web
npm install
cd ../backend
npm install后端使用环境变量连接 MySQL。
在 backend/ 目录下,将 .env.example 复制为 .env:
cp .env.example .envWindows 也可以手动复制。
backend/.env.example 内容如下:
PORT=3000
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=
MYSQL_DATABASE=daohang你需要根据本机 MySQL 实际情况修改:
MYSQL_HOST:数据库地址MYSQL_PORT:数据库端口MYSQL_USER:数据库用户名MYSQL_PASSWORD:数据库密码MYSQL_DATABASE:数据库名
项目中已经提供 SQL 文件:
backend/sql/init.sqlbackend/sql/init.navigation.sql
数据库设计说明:
backend/docs/database-design.mdbackend/docs/api.md
- 先在 MySQL 中创建数据库
- 执行初始化 SQL
- 再启动后端服务
例如:
CREATE DATABASE daohang DEFAULT CHARACTER SET utf8mb4;然后导入 SQL 文件。
注意:后端启动时还会执行一部分自动补充逻辑,例如补充字段、创建搜索引擎配置表、初始化管理员账号等。
进入 backend/:
npm run dev后端默认运行在:
http://127.0.0.1:3000
健康检查接口:
GET /health
进入 web/:
npm run devVite 会输出本地访问地址,通常类似:
http://127.0.0.1:5173
前端当前接口基地址写在:
web/src/api.js
默认配置为:
const API_BASE = 'http://127.0.0.1:3000/api'如果你后端端口改了,需要同步调整这里。
后端启动时会自动尝试初始化管理员账号:
- 用户名:
fenglbl - 密码:
6539593123
这是当前开发阶段的默认初始化账号,部署到正式环境前请务必修改。
GET /healthGET /api
POST /api/auth/registerPOST /api/auth/loginGET /api/auth/mePOST /api/auth/logoutPUT /api/auth/profilePUT /api/auth/passwordPUT /api/auth/settingsPOST /api/auth/avatar
GET /api/nav/public/groupsGET /api/nav/public/linksGET /api/nav/groupsPOST /api/nav/groupsPUT /api/nav/groups/:idDELETE /api/nav/groups/:idGET /api/nav/linksPOST /api/nav/linksPUT /api/nav/links/:idDELETE /api/nav/links/:id
GET /api/search-enginesGET /api/search-engines/adminPOST /api/search-enginesPUT /api/search-engines/:idDELETE /api/search-engines/:id
当前前端页面包括:
/:首页/login:登录页/register:注册页/admin:管理页/settings:设置页
项目同时支持:
- 公共导航
- 用户私有导航
当前项目正在逐步把配置管理统一到这种思路:
- 先支持启用 / 停用
- 尽量保留配置
- 删除操作尽量降级为二级操作
目前搜索引擎管理已经按这个方向落地。
如果你准备继续迭代这个项目,建议下一步优先做:
- 导航分组支持启用 / 停用
- 导航链接支持启用 / 停用
- 管理页增加更完整的状态筛选
- README 增加截图与部署说明
- 清理仓库中的本地开发产物(如 node_modules、dist、.env、上传文件等)
当前默认分支:
main
当前仓库仍处于持续迭代阶段,后续可能继续调整:
- 数据表结构
- 管理页交互
- 配置项的停用机制
- 前后端接口细节
如果用于正式部署,建议先补充:
- 更严格的权限控制
- 生产环境配置
- 日志与异常监控
- 数据备份策略
- 默认管理员账号修改机制
本项目采用 MIT License。
详见根目录 LICENSE 文件。
如果你准备继续维护这个仓库,可以参考:
CHANGELOG.md:记录重要变更CONTRIBUTING.md:开发与协作说明
如果后续确定要正式开源,建议再补充:
LICENSE- 部署文档
- 项目截图
- 发布说明