Add files via upload

This commit is contained in:
QWQLwToo
2026-01-28 13:26:17 +08:00
committed by GitHub
parent 7030903eb6
commit 151c1c2387
29 changed files with 12656 additions and 2 deletions
+302 -2
View File
@@ -1,2 +1,302 @@
# Home-Vue-go
Home-Vue原引导页开源项目的带后端版本
## 个人主页 - 动态版本
基于Vue3 + Go的个人主页项目,支持动态更新配置,无需修改代码即可更新站点信息。
### 技术栈
**前端:**
- Vue3 + Vite
- CSS3 + HTML5 + JavaScript
- Vue Router
- Axios
**后端:**
- Go + Gin
- Ent ORM
- JWT认证
- SQLite数据库
### 功能特性
- ✅ 动态配置站点信息(名称、URL、图标等)
- ✅ 可视化管理界面
- ✅ 支持多种图片格式上传(jpg、png、jpeg、webp、avif等)
- ✅ 联系方式管理(Email、GitHub、支付宝、微信等)
- ✅ JWT认证保护管理接口
- ✅ 数据存储在SQLite,轻量级数据库
- ✅ 支持Linux服务器二进制打包部署
### 项目结构
```
Home-Vue-go/
├── docs/ # 文档目录
├── scripts/ # 构建脚本
├── src/ # 前端源代码
├── internal/ # Go后端代码
└── public/ # 静态资源
```
详细的项目结构说明请查看 [PROJECT_STRUCTURE.md](./docs/PROJECT_STRUCTURE.md)
### 快速开始
#### 1. 环境要求
- Go >= 1.21
- Node.js >= 16.16.0
- npm >= 8.15.0
#### 2. 安装依赖
```bash
# 安装前端依赖
npm install
# 安装Go依赖
go mod download
```
#### 3. 生成Ent代码(必须)
**重要:** 在运行项目之前,必须先生成Ent代码,否则Go代码无法编译。
```bash
# 进入ent目录
cd internal/ent
# 生成Ent代码
go generate ./...
# 返回项目根目录
cd ../..
```
**如果遇到版本兼容性错误**(如 `invalid array length``Deprecated undefined`),使用:
```bash
cd internal/ent
# 使用与go.mod一致的版本(当前是v0.13.1
go run -mod=mod entgo.io/ent/cmd/ent@v0.13.1 generate ./schema
cd ../..
```
**重要**:版本号必须与 `go.mod` 中的 `entgo.io/ent` 版本一致。
**说明:**
- `go generate` 是Go的内置命令,用于运行代码生成工具
- `./...` 表示当前目录及所有子目录
- 这会根据 `schema/` 目录中的定义生成Ent ORM代码
- 如果Go版本较新(如go1.25+),可能需要使用 `go run` 方式
#### 4. 运行项目
**开发模式:**
需要打开两个终端窗口:
**终端1 - 启动Go后端:**
```bash
# 在项目根目录运行
go run main.go
```
**终端2 - 启动前端开发服务器:**
```bash
# 在项目根目录运行
npm run dev
```
**说明:**
- `go run main.go` 会编译并运行Go程序
- 后端默认运行在 `http://localhost:1551`
- 前端默认运行在 `http://localhost:1552`
- 首次运行会自动创建 `data/` 目录和数据库
- 可以通过环境变量 `PORT` 修改后端端口(默认1551
**Windows用户注意:** 如果遇到中文乱码,在PowerShell中运行:
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001
```
访问:
- 前端:http://localhost:1552
- 管理界面:http://localhost:1552/admin
- 登录页面:http://localhost:1552/login
**默认管理员账号:**
- 用户名:`admin`
- 密码:`admin123`
⚠️ **重要:** 首次运行后请立即修改默认密码!
#### 5. 构建部署
**构建Go后端(Linux):**
```bash
# 生成Ent代码(必须)
cd internal/ent
go generate ./...
cd ../..
# 构建Linux二进制文件
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o home-vue-go main.go
```
**构建Go后端(Windows):**
```bash
# 生成Ent代码(必须)
cd internal\ent
go generate ./...
cd ..\..
# 构建Windows二进制文件
go build -o home-vue-go.exe main.go
```
**构建前端:**
```bash
npm install
npm run build
```
构建完成后:
- Go二进制文件:`./home-vue-go` (Linux) 或 `./home-vue-go.exe` (Windows)
- 前端构建文件:`./dist`
**说明:**
- `go build` 编译Go程序为二进制文件
- `CGO_ENABLED=1` 启用CGOSQLite需要)
- `GOOS=linux GOARCH=amd64` 指定目标平台和架构
- `-o` 指定输出文件名
### 部署说明
1. **上传文件到服务器:**
- 上传 `home-vue-go` 二进制文件
- 上传 `dist` 目录(前端构建文件)
2. **运行二进制文件:**
```bash
./home-vue-go
```
3. **数据存储:**
- 数据库文件:`./data/home.db`
- 上传的图片:`./data/uploads/`
- 所有数据存储在二进制文件同级目录的 `data` 文件夹中
4. **环境变量(可选):**
```bash
export PORT=1551 # 服务端口,默认1551
export JWT_SECRET=your-secret-key # JWT密钥,建议修改
```
### 管理界面使用
1. 访问 `/admin` 进入管理界面
2. 使用默认账号登录
3. 在管理界面中可以:
- **站点配置**:修改站点名称、URL、图标、描述等
- **站点管理**:添加、编辑、删除站点链接
- **联系方式管理**:管理Email、GitHub、支付宝、微信等联系方式
### 数据迁移
如果你之前使用的是静态版本(使用JSON配置文件),可以:
1. 启动新版本服务
2. 登录管理界面
3. 手动导入原有数据,或使用API批量导入
### 文档
- [运行项目指南](./docs/RUN_PROJECT.md) - 如何运行前端和后端(推荐)
- [快速开始](./docs/QUICK_START.md) - 5步快速启动项目
- [Go命令学习指南](./docs/GO_COMMANDS.md) - Go命令详解(推荐学习)
- [Windows设置指南](./docs/WINDOWS_SETUP.md) - Windows专用设置指南
- [项目结构说明](./docs/PROJECT_STRUCTURE.md) - 详细的目录结构说明
- [设置指南](./docs/SETUP.md) - 详细的安装和配置步骤
- [本地调试指南](./docs/LOCAL_DEBUG.md) - 本地调试详细步骤
- [更新日志](./docs/CHANGELOG.md) - 版本更新记录
- [图标选择器说明](./docs/ICON_SELECTOR.md) - 图标配置使用指南
- [故障排查指南](./docs/TROUBLESHOOTING.md) - 常见问题解决方案
### API文档
#### 公开API(无需认证)
- `GET /api/sites` - 获取站点列表
- `GET /api/contacts` - 获取联系方式列表
- `GET /api/config` - 获取站点配置
#### 管理API(需要JWT认证)
- `POST /api/auth/login` - 登录获取token
- `GET /api/admin/sites` - 获取站点列表(管理)
- `POST /api/admin/sites` - 创建站点
- `PUT /api/admin/sites/:id` - 更新站点
- `DELETE /api/admin/sites/:id` - 删除站点
- `GET /api/admin/contacts` - 获取联系方式列表(管理)
- `POST /api/admin/contacts` - 创建联系方式
- `PUT /api/admin/contacts/:id` - 更新联系方式
- `DELETE /api/admin/contacts/:id` - 删除联系方式
- `GET /api/admin/config` - 获取站点配置(管理)
- `PUT /api/admin/config` - 更新站点配置
- `POST /api/admin/upload` - 上传图片文件
### 注意事项
1. **Email格式验证**Email类型的联系方式URL必须是 `mailto:` 格式(如:`mailto:i@bsgun.cn`
2. **图片上传**:支持 jpg、jpeg、png、gif、webp、avif、svg、bmp 格式
3. **数据库安全**:SQLite数据库文件存储在服务器本地,不对外暴露,防止数据库注入
4. **JWT密钥**:生产环境请务必修改JWT_SECRET环境变量
5. **默认密码**:首次部署后请立即修改管理员密码
### 开发命令
**Go相关命令:**
```bash
# 更新依赖
go mod tidy
# 下载依赖
go mod download
# 生成Ent代码
cd internal/ent && go generate ./... && cd ../..
# 运行后端(开发模式)
go run main.go
# 构建后端(当前平台)
go build -o home-vue-go main.go
# 构建后端(Linux
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o home-vue-go main.go
# 查看Go版本
go version
# 查看模块信息
go mod graph
```
**前端相关命令:**
```bash
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
### 许可证
MIT License