# 网站导航 **Repository Path**: sitexk_com/sitedh ## Basic Information - **Project Name**: 网站导航 - **Description**: No description available - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-06-08 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网站易达 - SiteDH 一个功能完善的浏览器书签管理和导航站点系统,支持多用户、分类管理、公开分享、浏览器书签导入等功能。 ## 功能特性 ### 核心功能 - 用户登录/注册(邮箱 OTP 验证,支持 SMTP 邮件发送) - 自定义分类管理(创建、编辑、删除、排序) - 书签/网站管理(添加、编辑、删除、收藏) - 模糊搜索(匹配名称和 URL) - 公开分享功能(生成可分享链接,支持关闭分享) - 浏览器书签批量导入(支持 Chrome、Edge、Firefox、QQ 浏览器) - 批量移动网站分类 - 重复 URL 自动过滤 ### 默认站点 - 管理员可设置默认站点用户 - 未登录用户访问首页自动展示默认站点内容(仅浏览模式) - 浏览模式下隐藏编辑、删除、分享等操作 ### 管理后台 - 仪表盘(用户数、分类数、书签数统计) - 用户管理(查看、封禁/解封、设置角色) - 分类管理(查看、删除,分页展示) - 书签管理(查看、编辑、删除,分页展示) - 站点设置(站点名称、域名、备案号、注册开关、默认站点) - 邮件服务配置(SMTP 设置、测试发送) - 主题定制(主色调、渐变背景) - 数据备份与恢复 - 个人资料编辑 ### 界面特性 - 响应式设计,适配桌面和移动端 - 底部显示 ICP 备案号和公安网备信息 - 暗色/亮色主题切换 ## 技术栈 ### 前端 - Vue 3 + TypeScript - Vite(构建工具) - Vue Router(路由管理) - Tailwind CSS(样式框架) - Lucide(图标库) ### 后端 - Go 1.21+ - Gin Web Framework - SQLite / MySQL(支持双数据库) - JWT(认证) ## 项目结构 ``` 网站导航/ ├── src/ │ ├── components/ # Vue 公共组件 │ ├── composables/ # 组合式函数(useAuth、useTheme) │ ├── layouts/ # 布局组件(AdminLayout) │ ├── pages/ # 页面组件 │ │ ├── HomePage.vue # 首页(书签导航) │ │ ├── LoginPage.vue # 登录页 │ │ ├── ProfilePage.vue # 个人资料页 │ │ ├── SharePage.vue # 分享页 │ │ ├── InstallPage.vue # 安装向导页 │ │ └── admin/ # 管理后台页面 │ ├── types/ # TypeScript 类型定义 │ └── utils/ # 工具函数(api、toast、adminApi) ├── server/ │ ├── main.go # 入口文件 & 路由注册 │ ├── config/ # 配置管理 │ ├── database/ # 数据库初始化 & CRUD │ ├── handlers/ # HTTP 请求处理 │ ├── middleware/ # 中间件(CORS、Auth) │ ├── models/ # 数据模型 & 请求结构 │ └── utils/ # 工具函数(JWT、邮件、响应) └── ...配置文件 ``` ## 快速开始 ### 环境要求 - Node.js 18+ - Go 1.21+ ### 1. 安装前端依赖 ```bash npm install ``` ### 2. 启动后端服务 ```bash cd server go mod tidy go run main.go ``` 后端服务默认运行在 http://localhost:8080 ### 3. 启动前端服务 ```bash npm run dev ``` 前端服务默认运行在 http://localhost:5173 ### 4. 初始化 首次访问会进入安装向导,按提示设置管理员账号和站点信息即可。 ## 生产部署 ### 方式一:宝塔面板部署(推荐) 详见 [DEPLOY.md](DEPLOY.md) ### 方式二:手动部署 #### 1. 编译前端 ```bash npm run build ``` 构建产物在 `dist/` 目录。 #### 2. 编译后端 ```bash cd server # Linux GOOS=linux GOARCH=amd64 go build -o sitedh main.go # Windows go build -o sitedh.exe main.go ``` #### 3. 配置环境变量 | 变量名 | 默认值 | 说明 | |--------|--------|------| | `PORT` | `8080` | 服务端口 | | `JWT_SECRET` | 内置密钥 | JWT 签名密钥(**生产环境务必修改**) | | `DB_TYPE` | `sqlite` | 数据库类型(`sqlite` 或 `mysql`) | | `CORS_ALLOWED_ORIGIN` | `*` | 允许的跨域来源 | #### 4. 启动服务 ```bash # 前端静态文件由后端托管 # 将 dist/ 目录内容复制到 server/dist/ 下 cp -r dist/ server/dist/ # 启动 ./sitedh ``` 或使用 Nginx 反向代理,后端只提供 API 服务。 #### 5. Systemd 服务(Linux) 创建 `/etc/systemd/system/sitedh.service`: ```ini [Unit] Description=SiteDH Navigation Service After=network.target [Service] Type=simple WorkingDirectory=/opt/sitedh ExecStart=/opt/sitedh/sitedh Restart=always Environment=PORT=8080 Environment=JWT_SECRET=your-strong-secret-key [Install] WantedBy=multi-user.target ``` ```bash systemctl daemon-reload systemctl enable sitedh systemctl start sitedh ``` ## API 接口 ### 公开接口 - `GET /api/info` - 获取站点信息 - `GET /api/installed` - 检查是否已安装 - `POST /api/install` - 执行安装 - `GET /api/share/:token` - 获取分享内容 - `GET /api/default-site` - 获取默认站点 ### 认证 - `POST /api/auth/send-otp` - 发送验证码 - `POST /api/auth/verify-otp` - 验证登录 ### 分类管理 - `GET /api/categories` - 获取分类列表 - `POST /api/categories` - 创建分类 - `PUT /api/categories/:id` - 更新分类 - `DELETE /api/categories/:id` - 删除分类 - `POST /api/categories/:id/share` - 切换公开分享 - `DELETE /api/categories/:id/share` - 关闭分享 ### 书签管理 - `POST /api/bookmarks` - 创建书签 - `PUT /api/bookmarks/:id` - 更新书签 - `DELETE /api/bookmarks/:id` - 删除书签 - `PUT /api/bookmarks/:id/favorite` - 切换收藏 - `POST /api/bookmarks/import` - 批量导入书签 - `POST /api/bookmarks/move` - 批量移动分类 ### 用户 - `GET /api/user/profile` - 获取个人资料 - `PUT /api/user/profile` - 更新个人资料 - `PUT /api/user/password` - 修改密码 ### 管理后台(需管理员权限) - `GET /api/admin/dashboard` - 仪表盘数据 - `GET /api/admin/users` - 用户列表(分页) - `PUT /api/admin/users/:id/role` - 修改用户角色 - `PUT /api/admin/users/:id/status` - 修改用户状态 - `GET /api/admin/categories` - 分类列表(分页) - `DELETE /api/admin/categories/:id` - 删除分类 - `GET /api/admin/bookmarks` - 书签列表(分页) - `PUT /api/admin/bookmarks/:id` - 编辑书签 - `DELETE /api/admin/bookmarks/:id` - 删除书签 - `GET /api/admin/settings` - 获取站点设置 - `PUT /api/admin/settings` - 更新站点设置 - `GET /api/admin/email-settings` - 获取邮件配置 - `PUT /api/admin/email-settings` - 更新邮件配置 - `POST /api/admin/test-email` - 测试发送邮件 - `GET /api/admin/backups` - 备份列表 - `POST /api/admin/backups` - 创建备份 - `POST /api/admin/backups/restore` - 恢复备份 ## 许可证 MIT