返回项目列表
晨之博客
Gitee 开源项目 推荐

晨之博客

基于 Go + Vue3 构建的现代化博客系统,采用前后端分离架构设计。系统提供了完整的博客功能,包括文章管理、用户系统、评论互动、数据可视化、系统监控等模块。

gin+vue3

晨之博客 (Chen-Blog)

Go Vue Gin Naive UI License

一个现代化、功能完善的个人博客系统

Gitee 地址 | 在线演示


📖 项目简介

晨之博客是一个基于 Go + Vue3 构建的现代化博客系统,采用前后端分离架构设计。系统提供了完整的博客功能,包括文章管理、用户系统、评论互动、数据可视化、系统监控、公告管理、站点设置等模块。

✨ 主要特性

  • 🖊️ 富文本编辑 - 支持 Markdown 编辑,实时预览
  • 📊 数据可视化 - 完整的统计分析和数据展示
  • 🖥️ 系统监控 - 实时监控系统运行状态
  • 🔐 JWT 认证 - 安全可靠的用户认证系统
  • 💬 评论系统 - 支持嵌套回复和点赞
  • ❤️ 点赞系统 - IP 限流的防刷点赞
  • ⭐ 收藏功能 - 收藏喜欢的文章,支持收藏夹分类
  • 🔔 通知系统 - 实时的站内通知,支持聚合和免打扰
  • 🔍 全文搜索 - 高效的文章搜索,支持热词和建议
  • 📱 响应式设计 - 完美适配各种设备
  • 🌙 暗色模式 - 支持明暗主题切换
  • 📢 公告系统 - 首页和个人中心公告展示
  • 👥 在线人数 - 实时在线人数追踪
  • ⚙️ 站点设置 - 全局站点配置管理
  • 📋 操作日志 - 业务操作审计日志
  • 📅 文章归档 - 按时间线归档文章
  • 🔗 友链管理 - 博客交换友链申请和审核
  • 📄 静态页面 - 自定义静态页面(关于、友链等)
  • 🎨 媒体管理 - 图片上传和管理,支持分类
  • 📈 访问统计 - PV/UV 统计,访客分析,访问日志记录
  • 🔒 权限管理 - 多角色权限控制(普通用户/管理员/超级管理员)
  • 🧵 SEO 优化 - 网站地图、RSS 订阅、爬虫协议
  • 🛡️ 安全防护 - CORS 跨域、SQL 注入防护、XSS 防护
  • 📝 草稿箱 - 自动保存文章草稿
  • 🚫 举报系统 - 用户举报违规内容
  • 👤 个人资料 - 完善的用户资料管理和登录日志
  • 🔄 数据迁移 - 支持 SQLite ↔ MySQL 双向数据迁移
  • 💾 数据备份 - MySQL 到 SQLite 自动备份工具

🛠️ 技术栈

后端技术

| 技术 | 说明 | 版本 | |------|------|------| | Go | 服务器语言 | 1.21+ | | Gin | HTTP Web 框架 | v1.9+ | | GORM | ORM 库 | v2 | | JWT | 身份认证 | go-jwt | | Viper | 配置管理 | v1.21+ | | Zap | 日志库 | v1.28+ | | Lumberjack | 日志轮转 | v2 | | SQLite | 开发数据库 | - | | MySQL | 生产数据库 | 8.0+ |

前端技术

| 技术 | 说明 | 版本 | |------|------|------| | Vue 3 | 前端框架 | 3.4+ | | TypeScript | 类型系统 | 5.4+ | | Vite | 构建工具 | 5.2+ | | Naive UI | UI 组件库 | 2.38+ | | ECharts | 数据可视化 | 6.0+ | | Vue Router | 路由管理 | 4.3+ | | Axios | HTTP 客户端 | 1.6+ | | md-editor-v3 | Markdown 编辑器 | 6.4+ |


📁 项目结构

chen-dynasty/
├── README.md                 # 项目说明文档(中文)
├── README.en.md              # 项目说明文档(英文)
├── start.sh                  # 一键启动脚本
├── docker-compose.yml        # Docker Compose 部署配置
├── .env.example              # 环境变量示例
│
├── backend/                  # 🌟 Go 后端服务
│   ├── main.go              # 程序入口
│   ├── config.yaml          # 配置文件
│   ├── go.mod               # Go 模块依赖
│   ├── Dockerfile           # 后端 Docker 构建文件
│   │
│   ├── config/              # 配置模块
│   │   └── config.go        # 配置加载器(支持环境变量覆盖)
│   │
│   ├── database/            # 数据库模块
│   │   └── database.go      # 数据库连接、连接池、自动迁移
│   │
│   ├── models/              # 📦 数据模型(30+ 模型)
│   │   └── models.go        # 所有数据模型定义
│   │
│   ├── repositories/        # 💾 数据访问层(预留)
│   │
│   ├── services/            # 🧠 业务逻辑层(15+ 服务)
│   │   ├── article_service.go       # 文章服务
│   │   ├── user_service.go          # 用户服务
│   │   ├── category_service.go      # 分类服务
│   │   ├── tag_service.go           # 标签服务
│   │   ├── comment_service.go       # 评论服务
│   │   ├── favorite_service.go      # 收藏服务
│   │   ├── notification_service.go  # 通知服务
│   │   ├── search_service.go        # 搜索服务
│   │   ├── statistics_service.go    # 统计服务
│   │   ├── monitor_service.go       # 监控服务
│   │   ├── media_service.go         # 媒体服务
│   │   ├── friendlink_service.go    # 友链服务
│   │   ├── page_service.go          # 页面服务
│   │   ├── seo_service.go           # SEO 服务
│   │   ├── site_setting_service.go  # 站点设置服务
│   │   └── announcement_service.go  # 公告服务
│   │
│   ├── handlers/            # 🎮 控制器层(17+ 控制器)
│   │   ├── article_handler.go       # 文章控制器
│   │   ├── user_handler.go          # 用户控制器
│   │   ├── category_handler.go      # 分类控制器
│   │   ├── tag_handler.go           # 标签控制器
│   │   ├── comment_handler.go       # 评论控制器
│   │   ├── favorite_handler.go      # 收藏控制器
│   │   ├── notification_handler.go  # 通知控制器
│   │   ├── search_handler.go        # 搜索控制器
│   │   ├── statistics_handler.go    # 统计控制器
│   │   ├── monitor_handler.go       # 监控控制器
│   │   ├── media_handler.go         # 媒体控制器
│   │   ├── friendlink_handler.go    # 友链控制器
│   │   ├── page_handler.go          # 页面控制器
│   │   ├── seo_handler.go           # SEO 控制器
│   │   ├── site_setting_handler.go  # 站点设置控制器
│   │   ├── announcement_handler.go  # 公告控制器
│   │   ├── online_handler.go        # 在线人数控制器
│   │   └── common.go               # 通用响应处理
│   │
│   ├── router/              # 🛤️ 路由模块(17+ 路由文件)
│   │   ├── router.go             # 路由总览和中间件配置
│   │   ├── article.go            # 文章路由
│   │   ├── user.go               # 用户路由
│   │   ├── category.go           # 分类路由
│   │   ├── tag.go                # 标签路由
│   │   ├── comment.go            # 评论路由
│   │   ├── favorite.go           # 收藏路由
│   │   ├── notification.go       # 通知路由
│   │   ├── search.go             # 搜索路由
│   │   ├── statistics.go         # 统计路由
│   │   ├── monitor.go            # 监控路由
│   │   ├── media.go              # 媒体路由
│   │   ├── friendlink.go         # 友链路由
│   │   ├── page.go               # 页面路由
│   │   ├── seo.go                # SEO 路由
│   │   ├── site_setting.go       # 站点设置路由
│   │   ├── announcement.go       # 公告路由
│   │   └── online.go             # 在线人数路由
│   │
│   ├── middleware/           # 🔧 中间件
│   │   ├── auth.go            # JWT 认证中间件
│   │   ├── logger.go          # 请求日志中间件(JSON 结构化)
│   │   ├── operation_log.go   # 业务操作日志中间件
│   │   ├── access_log.go      # 访问日志中间件(自动记录访问数据)
│   │   └── online_tracker.go  # 在线追踪中间件
│   │
│   ├── tools/                # 🛠️ 数据迁移工具
│   │   ├── migrate.go        # SQLite → MySQL 迁移工具
│   │   └── README_MIGRATE.md # 迁移工具使用说明
│   │
│   ├── cmd/                  # 🛠️ 命令行工具
│   │   ├── mysql_to_sqlite_backup.go # MySQL → SQLite 备份工具
│   │   └── README.md         # 工具使用说明
│   │
│   ├── utils/                # 🧰 工具函数
│   │   ├── jwt.go            # JWT 工具
│   │   ├── password.go       # 密码加密(bcrypt)
│   │   ├── response.go       # 统一响应封装
│   │   └── logger.go         # 日志系统(Zap + Lumberjack)
│   │
│   ├── uploads/              # 📤 文件上传目录
│   ├── logs/                 # 📝 日志目录
│   └── blog.db               # SQLite 数据库文件
│
└── frontend/                 # 🌟 Vue 前端应用
    ├── package.json          # 项目依赖
    ├── vite.config.ts        # Vite 配置(含代理)
    ├── tsconfig.json         # TypeScript 配置
    ├── index.html            # HTML 入口
    ├── Dockerfile            # 前端 Docker 构建文件
    ├── nginx.conf            # Nginx 部署配置
    │
    ├── src/
    │   ├── main.ts           # Vue 入口文件
    │   ├── App.vue           # 根组件(含暗色模式)
    │   ├── style.css         # 全局样式
    │   │
    │   ├── api/              # 📡 API 接口层
    │   │   ├── request.ts    # Axios 封装和拦截器
    │   │   ├── article.ts    # 文章接口
    │   │   ├── user.ts       # 用户接口
    │   │   ├── category.ts   # 分类接口
    │   │   ├── tag.ts        # 标签接口
    │   │   ├── media.ts      # 媒体接口
    │   │   └── site_setting.ts # 站点设置接口
    │   │
    │   ├── router/           # 🛤️ 路由配置
    │   │   └── index.ts      # 路由定义(14 个页面路由)
    │   │
    │   ├── views/            # 📄 页面组件(14 个页面)
    │   │   ├── Home.vue           # 首页
    │   │   ├── Article.vue        # 文章详情
    │   │   ├── MyArticles.vue     # 我的文章
    │   │   ├── Categories.vue     # 分类列表
    │   │   ├── Category.vue       # 分类文章
    │   │   ├── Tags.vue           # 标签列表
    │   │   ├── Tag.vue            # 标签文章
    │   │   ├── Archive.vue        # 文章归档
    │   │   ├── Search.vue         # 搜索结果
    │   │   ├── Login.vue          # 登录页
    │   │   ├── Profile.vue        # 个人中心
    │   │   ├── Monitor.vue        # 系统监控
    │   │   ├── DataVisualization.vue # 数据可视化
    │   │   └── About.vue          # 关于页面
    │   │
    │   ├── components/       # 🧩 公共组件
    │   │   ├── NavBar.vue    # 导航栏组件
    │   │   └── Footer.vue    # 页脚组件
    │   │
    │   ├── plugins/          # 🔌 插件配置
    │   │   └── naive-ui.ts   # Naive UI 插件配置
    │   │
    │   ├── assets/           # 🖼️ 静态资源
    │   │
    │   ├── dist/             # 📦 构建输出
    │   └── logs/             # 📝 前端日志
    │
    └── logs/                 # 📝 前端日志目录

🚀 快速开始

环境要求

  • Go: 1.21+
  • Node.js: 18+
  • npm 或 pnpm

一键启动(推荐)

# 克隆项目
git clone https://gitee.com/your-gitee/chen-dynasty.git
cd chen-dynasty

# 赋予脚本执行权限
chmod +x start.sh

# 启动所有服务
./start.sh start

# 查看服务状态
./start.sh status

# 查看日志
./start.sh logs

# 停止服务
./start.sh stop

手动启动

1. 启动后端

cd backend

# 安装依赖
go mod tidy

# 运行服务
go run main.go

# 或编译后运行
go build -o blog_server .
./blog_server

2. 启动前端

cd frontend

# 安装依赖
npm install

# 开发模式
npm run dev

# 生产构建
npm run build

访问地址

  • 前端: http://localhost:5173
  • 后端 API: http://localhost:9000
  • 健康检查: http://localhost:9000/ping

⚙️ 配置说明

配置文件位于 backend/config.yaml,支持通过环境变量覆盖敏感配置:

# 应用配置
app:
  name: "chen-blog"           # 应用名称
  port: "9000"               # 服务端口
  mode: "debug"              # 运行模式:debug / release
  env: "development"         # 环境:development / production

# 数据库配置
database:
  driver: "mysql"            # 数据库驱动:sqlite / mysql
  max_open_conns: 100       # 最大打开连接数
  max_idle_conns: 10        # 最大空闲连接数
  max_life_time: 3600       # 连接最大生命周期(秒)
  sqlite:
    path: "./blog.db"        # SQLite 数据库路径
  mysql:
    host: "127.0.0.1"
    port: 3306
    user: "root"
    password: "password"
    database: "chen_blog"
    charset: "utf8mb4"

# JWT 配置(生产环境请通过环境变量 JWT_SECRET 设置)
jwt:
  secret: ""                 # JWT 密钥(留空则通过环境变量覆盖)
  expire_hour: 24            # 过期时间(小时)

# 日志配置
log:
  level: "info"             # 日志级别:debug / info / warn / error
  filename: "./logs/blog.log"
  max_size: 100             # 单个日志文件大小(MB)
  max_backups: 30           # 保留的旧日志文件数量
  max_age: 30               # 保留旧日志最大天数
  compress: true            # 是否压缩旧日志

# CORS 跨域配置
cors:
  allow_origins:             # 允许的来源
    - "*"
  allow_methods:             # 允许的 HTTP 方法
    - "GET"
    - "POST"
    - "PUT"
    - "DELETE"
    - "OPTIONS"
  allow_headers:             # 允许的请求头
    - "Origin"
    - "Content-Type"
    - "Authorization"
  max_age: 86400             # 预检请求缓存时间(秒)

# 媒体/上传配置
media:
  upload_path: "./uploads"   # 上传目录
  max_file_size: 10          # 单文件最大大小(MB)
  allowed_exts:              # 允许的文件扩展名
    - ".jpg"
    - ".jpeg"
    - ".png"
    - ".gif"
    - ".webp"
    - ".svg"
  server_url: "http://localhost:9000/uploads"  # 访问 URL 前缀
  thumbnail:                 # 缩略图配置
    enabled: false           # 是否启用缩略图
    max_width: 300
    max_height: 300
    quality: 80
    format: "webp"

# 站点配置
site:
  name: "晨之博客"
  subtitle: "记录技术,分享生活"
  description: "一个简洁优雅的博客系统"
  keywords: "博客,Go,Vue,程序员,技术分享"
  url: "http://localhost:9000"
  admin_url: "http://localhost:5173"
  logo: "/uploads/logo.png"
  favicon: "/favicon.ico"
  author:
    name: "晨之"
    email: "admin@example.com"
    avatar: "/uploads/avatar.png"
  seo:
    title_separator: " - "
    robots: "index,follow"
    google_verification: ""
    baidu_verification: ""
  social:
    github: ""
    weibo: ""
    zhihu: ""
    twitter: ""
  icp:
    enabled: false
    number: ""
    link: "https://beian.miit.gov.cn"
  copyright:
    start_year: 2024
    text: "© {year} {author}. All rights reserved."

# 分页配置
pagination:
  default_page_size: 10
  max_page_size: 100

# 文章配置
article:
  summary_length: 200
  draft_auto_save: true

📚 功能模块

1. 用户模块

| 功能 | 说明 | |------|------| | 用户注册 | 支持用户名、邮箱注册 | | 用户登录 | JWT Token 认证 | | 找回密码 | 通过邮箱验证 | | 个人资料 | 修改昵称、邮箱、头像、简介 | | 登录日志 | 查看登录历史记录 | | 操作日志 | 记录敏感操作(密码修改等) | | 权限管理 | 普通用户/管理员/超级管理员 |

2. 文章模块

| 功能 | 说明 | |------|------| | 文章发布 | Markdown 富文本编辑 | | 文章管理 | 列表、编辑、删除、恢复 | | 文章置顶 | 置顶重要文章 | | 点赞功能 | IP 限流防刷(每天每 IP 每篇文章一个赞) | | 文章举报 | 用户举报违规内容 | | 草稿箱 | 保存未发布的文章 | | 阅读统计 | 记录文章阅读量 | | 定时发布 | 支持定时发布文章 |

3. 评论模块

| 功能 | 说明 | |------|------| | 评论发布 | 支持 Markdown | | 评论回复 | 支持嵌套回复 | | 评论管理 | 审核、删除 | | 评论点赞 | 点赞评论 |

4. 分类与标签

| 功能 | 说明 | |------|------| | 分类管理 | 树形分类结构 | | 标签管理 | 彩色标签 | | 文章关联 | 文章分类/标签关联 |

5. 收藏模块

| 功能 | 说明 | |------|------| | 收藏文章 | 收藏喜欢的文章 | | 收藏列表 | 查看收藏的文章 | | 收藏管理 | 添加/移除收藏 | | 收藏夹 | 自定义收藏夹分类管理 |

6. 通知系统

| 功能 | 说明 | |------|------| | 通知列表 | 查看各类通知 | | 未读统计 | 未读消息数量 | | 标记已读 | 单条/全部标记已读 | | 通知设置 | 设置通知偏好(免打扰等) | | 通知聚合 | 同类通知自动聚合 |

7. 搜索系统

| 功能 | 说明 | |------|------| | 全文搜索 | 高效的搜索功能 | | 热门关键词 | 显示搜索热词 | | 搜索建议 | 智能提示 | | 搜索历史 | 管理搜索记录 |

8. 系统监控

| 功能 | 说明 | |------|------| | 实时数据 | CPU、内存、磁盘使用率 | | GC 统计 | 垃圾回收监控 | | 数据库统计 | 连接数、表数量 | | 网络统计 | TCP 连接数、请求统计 | | 告警系统 | 阈值告警 | | 响应时间 | 接口响应时间分布 |

9. 数据可视化

| 功能 | 说明 | |------|------| | 业务统计 | 文章、用户、评论概览 | | 趋势分析 | 近 30 天增长趋势 | | 分类分布 | 饼图展示分类占比 | | 发布时段 | 文章发布时间分布 | | 用户活跃 | 登录/活跃统计 | | 文章质量 | 互动数据 TOP 榜单 | | 热门标签 | 标签使用频率统计 | | 导出报表 | JSON 格式导出 |

10. SEO 优化

| 功能 | 说明 | |------|------| | 网站地图 | /sitemap.xml | | RSS 订阅 | /rss.xml | | 爬虫协议 | /robots.txt | | SEO 路由 | SEO 相关的动态路由处理 |

11. 友链管理

| 功能 | 说明 | |------|------| | 友链申请 | 博客交换友链申请 | | 友链审核 | 管理员审核友链申请 | | 友链展示 | 首页侧边栏展示友链 |

12. 站点设置

| 功能 | 说明 | |------|------| | 全局配置 | 网站名称、描述、关键字等 | | 服务器 URL | 资源访问地址配置 | | 动态管理 | 运行时动态更新配置 |

13. 公告系统

| 功能 | 说明 | |------|------| | 公告展示 | 首页和个人中心展示公告 | | 公告管理 | 管理员更新公告内容 | | 富文本支持 | 支持 Markdown 格式公告 |

14. 在线人数

| 功能 | 说明 | |------|------| | 实时统计 | 基于 Session 的在线人数统计 | | 自动清理 | 5 分钟超时自动清理过期会话 | | 公开接口 | 无需认证即可获取在线人数 |

15. 文章归档

| 功能 | 说明 | |------|------| | 时间线 | 按年月归档文章 | | 统计展示 | 显示每月文章数量 |

16. 媒体管理

| 功能 | 说明 | |------|------| | 文件上传 | 支持图片、视频、音频、文档 | | 媒体分类 | 自定义媒体分类管理 | | 缩略图 | 自动生成图片缩略图 | | 文件管理 | 查看、删除媒体文件 | | 关联文章 | 媒体与文章关联 |

17. 静态页面

| 功能 | 说明 | |------|------| | 页面管理 | 创建和管理静态页面 | | 模板系统 | 支持多种页面模板 | | 版本控制 | 页面历史版本记录 | | SEO优化 | 每个页面独立SEO设置 | | 自定义URL | 支持自定义页面别名 |

18. 访问统计 🆕

| 功能 | 说明 | |------|------| | PV/UV 统计 | 页面浏览量和独立访客统计 | | 访客分析 | 设备类型、浏览器、操作系统分析 | | 地域统计 | 国家、省份、城市分布 | | 来源分析 | 搜索引擎、社交媒体、直接访问 | | 实时统计 | 每小时访问数据统计 | | 趋势分析 | 日/周/月访问趋势 | | 访问日志 | 自动记录所有访问请求(IP、UA、Referer 等) | | 文章统计 | 每篇文章的访问量统计 |

19. 搜索增强

| 功能 | 说明 | |------|------| | 多类型搜索 | 文章、页面、评论、用户搜索 | | 搜索建议 | 智能关键词补全 | | 热词统计 | 热门搜索词排行榜 | | 搜索历史 | 个人搜索历史记录 | | 结果排序 | 按相关性、时间排序 |

20. 安全防护

| 功能 | 说明 | |------|------| | JWT认证 | Token过期自动刷新 | | CORS配置 | 可配置的跨域资源共享 | | SQL注入防护 | GORM参数化查询 | | XSS防护 | 输入内容转义处理 | | IP限流 | 点赞等操作IP限流 | | 密码加密 | bcrypt强加密算法 | | 操作审计 | 敏感操作日志记录 |


🌐 API 接口文档

详细接口文档请查看 API_DOC.md

认证方式

所有需要认证的接口需要在 Header 中携带 Token:

Authorization: Bearer <token>
Content-Type: application/json

响应格式

``json // 成功响应 { "code": 200, "message": "success", "data": {} }

// 错误响应 { "error": "错误信息" }


### 主要接口

| 方法 | 路径 | 说明 | 认证 |
|------|------|------|------|
| POST | `/api/v1/auth/register` | 用户注册 | 否 |
| POST | `/api/v1/auth/login` | 用户登录 | 否 |
| GET | `/api/v1/articles` | 文章列表 | 否 |
| GET | `/api/v1/articles/:id` | 文章详情 | 否 |
| POST | `/api/v1/articles` | 创建文章 | 是 |
| PUT | `/api/v1/articles/:id` | 更新文章 | 是 |
| DELETE | `/api/v1/articles/:id` | 删除文章 | 是 |
| POST | `/api/v1/articles/:id/like` | 点赞文章 | 否 |
| DELETE | `/api/v1/articles/:id/like` | 取消点赞 | 否 |
| GET | `/api/v1/categories` | 分类列表 | 否 |
| POST | `/api/v1/categories` | 创建分类 | 是 |
| GET | `/api/v1/tags` | 标签列表 | 否 |
| POST | `/api/v1/comments` | 发表评论 | 是 |
| GET | `/api/v1/monitor/system` | 系统监控数据 | 是 |
| GET | `/api/v1/stats/overview` | 统计概览 | 是 |
| GET | `/api/v1/announcement` | 获取公告 | 否 |
| PUT | `/api/v1/announcement` | 更新公告 | 是(管理员) |
| GET | `/api/v1/online` | 获取在线人数 | 否 |
| GET | `/api/v1/site-settings/public` | 获取公开站点设置 | 否 |
| GET | `/api/v1/search` | 全文搜索 | 否 |
| GET | `/api/v1/friendlinks` | 友链列表 | 否 |
| POST | `/api/v1/media/upload` | 上传文件 | 是 |
| GET | `/api/v1/media` | 媒体列表 | 是 |
| GET | `/api/v1/pages` | 页面列表 | 否 |
| GET | `/api/v1/pages/:slug` | 页面详情 | 否 |
| GET | `/api/v1/favorites` | 收藏列表 | 是 |
| POST | `/api/v1/favorites` | 添加收藏 | 是 |
| DELETE | `/api/v1/favorites/:id` | 取消收藏 | 是 |
| GET | `/api/v1/notifications` | 通知列表 | 是 |
| PUT | `/api/v1/notifications/read` | 标记已读 | 是 |
| GET | `/api/v1/users/me` | 获取当前用户 | 是 |
| PUT | `/api/v1/users/me` | 更新个人资料 | 是 |
| GET | `/api/v1/users/me/logs` | 登录日志 | 是 |
| GET | `/api/v1/stats/access` | 访问统计数据 | 是 |
| GET | `/api/v1/stats/trends` | 访问趋势数据 | 是 |
| GET | `/sitemap.xml` | 网站地图 | 否 |
| GET | `/rss.xml` | RSS 订阅 | 否 |
| GET | `/robots.txt` | 爬虫协议 | 否 |

---

## 🛠️ 数据迁移工具

项目提供了完整的数据迁移工具,支持 SQLite 和 MySQL 之间的双向数据迁移。

### SQLite → MySQL(开发→生产)

```bash
cd backend
go run tools/migrate.go

功能特性:

  • 自动读取 config.yaml 配置
  • 全量迁移所有表数据
  • 实时显示迁移进度
  • 迁移后数据验证

MySQL → SQLite(生产→开发)

cd backend
go run cmd/mysql_to_sqlite_backup.go

功能特性:

  • 将 MySQL 数据备份到 SQLite
  • 生成 blog_backup.db 备份文件
  • 支持完整的数据结构迁移

详细使用说明请查看:


🎨 界面预览

首页

  • 轮播图展示置顶文章
  • 最新文章列表
  • 热门文章排行
  • 分类导航
  • 标签云
  • 公告展示

文章详情页

  • Markdown 渲染
  • 代码高亮
  • 点赞/收藏功能
  • 评论系统
  • 相关推荐

管理后台

  • 个人资料管理
  • 文章编辑器(md-editor-v3)
  • 数据可视化中心
  • 系统监控面板
  • 站点设置管理

📝 开发指南

添加新功能

  1. 后端

    • 在 models/models.go 添加数据模型
    • 在 services/ 添加业务逻辑
    • 在 handlers/ 添加控制器
    • 在 router/ 注册路由
    • 更新 middleware/auth.go 添加权限控制(如需要)
  2. 前端

    • 在 api/ 添加接口封装
    • 在 views/ 添加页面组件
    • 在 router/index.ts 添加路由
    • 添加相应的样式

数据库迁移

系统启动时会自动执行数据库迁移,创建必要的表结构。

如需手动迁移:

cd backend
go run main.go -migrate

🔧 部署指南

Docker 部署

使用 Docker Compose 一键部署:

# 复制环境变量配置
cp .env.example .env
# 编辑 .env 文件修改配置
vim .env

# 启动所有服务
docker compose up -d

# 查看日志
docker compose logs -f

# 停止服务
docker compose down
# docker-compose.yml 主要配置
services:
  backend:
    build: ./backend
    ports:
      - "${BACKEND_PORT:-9000}:9000"
    environment:
      DATABASE_MYSQL_HOST: host.docker.internal
      DATABASE_MYSQL_USER: ${MYSQL_USER}
      DATABASE_MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      JWT_SECRET: ${JWT_SECRET}
    volumes:
      - backend_uploads:/app/uploads
      - backend_logs:/app/logs

  frontend:
    build: ./frontend
    ports:
      - "${FRONTEND_PORT:-8081}:80"
    depends_on:
      - backend

Nginx 配置

``nginx server { listen 80; server_name your-domain.com;

# 前端静态文件
location / {
    root /var/www/chen-blog/frontend/dist;
    try_files $uri $uri/ /index.html;
}

# API 代理
location /api/ {
    proxy_pass http://localhost:9000/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

# 上传文件访问
location /uploads/ {
    proxy_pass http://localhost:9000/uploads/;
    proxy_set_header Host $host;
}

}


---

## 📄 许可证

本项目基于 [MIT License](./LICENSE) 开源,你可以自由使用、修改和分发。

---

## 🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

1. Fork 本仓库
2. 创建分支 (`git checkout -b feature/AmazingFeature`)
3. 提交代码 (`git commit -m 'Add some AmazingFeature'`)
4. 推送分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request

---

## 📧 联系方式

- **作者**: 晨
- **邮箱**: 1542776628@qq.com
- **博客**: https://www.chenzhanxu.top/

---

## 🙏 致谢

本项目参考了以下开源项目:

- [Gin](https://github.com/gin-gonic/gin) - Go Web 框架
- [Naive UI](https://github.com/tusen-ai/naive-ui) - Vue 3 组件库
- [ECharts](https://github.com/ecomfe/echarts) - 数据可视化图表库
- [md-editor-v3](https://github.com/imzbf/md-editor-v3) - Markdown 编辑器
- [Zap](https://github.com/uber-go/zap) - 高性能日志库

---

<div align="center">

**如果这个项目对你有帮助,请 star ⭐ 支持一下!**

</div>