# CodingCommunity
**Repository Path**: CodingKeep/Blog-Person
## Basic Information
- **Project Name**: CodingCommunity
- **Description**: CodingCommunity基于 **SpringBoot 3.0.5 + Vue 3 + Naive UI** 的全栈博客系统,集成 MyBatis-Plus、Sa-Token、Redis、RabbitMQ 等主流技术栈,适合用作个人博客、学习项目或毕设参考。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2026-01-30
- **Last Updated**: 2026-03-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# CodingCommunity
**一个现代化的全栈技术博客系统**
基于 **SpringBoot 3** + **Vue 3** + **Naive UI** + **UniApp 小程序**
[](https://openjdk.org/)
[](https://spring.io/projects/spring-boot)
[](https://vuejs.org/)
[](LICENSE)
[](https://gitee.com/zhongshichaosss/Blog-Person/stargazers)
---
### 博客前台
| 前台首页 | 文章详情 |
|:--------:|:--------:|
|  |  |
| 归档页面 | 友情链接 |
|:--------:|:--------:|
|  |  |
### 后台管理
| 登录页面 | 控制台 |
|:--------:|:--------:|
|  |  |
| 文章管理 | 文章编辑 |
|:--------:|:--------:|
|  |  |
| 分类管理 | 标签管理 |
|:--------:|:--------:|
|  |  |
| 评论管理 | 用户管理 |
|:--------:|:--------:|
|  |  |
| 暗黑模式-前台 | 暗黑模式-后台 |
|:--------:|:--------:|
|  |  |
### 微信小程序
| 小程序首页 | 小程序详情 | 小程序我的 |
|:--------:|:--------:|:--------:|
|  |  |  |
---
## 项目简介
CodingCommunity 是一个功能完善的全栈博客系统,前后端分离,适合用作**个人博客**、**学习项目**或**毕设参考**。
**核心亮点:** Sa-Token 权限认证 · Redis 缓存 · RabbitMQ 消息队列 · Redisson 分布式锁 · Gitee/GitHub 社交登录 · 阿里云 OSS · 暗黑主题 · UniApp 小程序
---
## 技术栈
| 层级 | 技术 |
|:----:|:-----|
| **后端** | SpringBoot 3 · MyBatis-Plus · Sa-Token · Redis · Redisson · RabbitMQ · MySQL 8 |
| **前端** | Vue 3 · Vite 5 · Naive UI · Pinia · Axios · marked · highlight.js |
| **小程序** | UniApp · Vue 3 · TypeScript · uview-plus · Pinia · UnoCSS |
---
## 快速开始
### 环境要求
| 环境 | 版本 | 必须 |
|:----:|:----:|:----:|
| JDK | 17+ | ✅ |
| Node.js | 18+ | ✅ |
| MySQL | 8.0+ | ✅ |
| Redis | 7.0+ | ✅ |
| Maven | 3.6+ | ✅ |
| RabbitMQ | 3.x | ❌ 可选 |
### 第一步:克隆项目
```bash
git clone https://gitee.com/zhongshichaosss/Blog-Person.git
cd Blog-Person
```
### 第二步:初始化数据库
```bash
# 登录 MySQL 创建数据库
mysql -u root -p
CREATE DATABASE blog_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit
# 导入初始化脚本(包含表结构和示例数据)
mysql -u root -p blog_db < blog-backend/src/main/resources/sql/init.sql
```
### 第三步:修改后端配置
编辑 `blog-backend/src/main/resources/application.yml`,修改以下必填项:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/blog_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 你的数据库密码 # ← 必改
data:
redis:
host: localhost
port: 6379
password: # ← 无密码留空
rabbitmq:
listener:
simple:
auto-startup: false # ← 没装 RabbitMQ 就写 false
```
### 第四步:启动后端
```bash
cd blog-backend
mvn spring-boot:run
```
> 看到 `CodingCommunity启动成功!` 表示后端启动成功,API 文档:http://localhost:8080/doc.html
### 第五步:启动前端
```bash
cd blog-frontend
npm install
npm run dev
```
> 启动后访问:http://localhost:3000
### 第六步:登录
| 角色 | 账号 | 密码 |
|:----:|:----:|:----:|
| 管理员 | admin | admin123 |
| 普通用户 | test | test123 |
---
## 功能概览
### 博客前台
首页文章列表 · Markdown 渲染 · 代码高亮 · 目录导航 · 分类标签 · 文章归档 · 评论互动 · 点赞收藏 · 全文搜索 · 暗黑主题 · 响应式布局
### 后台管理
数据仪表盘 · 文章管理(CRUD/草稿/回收站/定时发布/导入导出) · 分类标签管理 · 评论管理 · 用户管理 · 角色权限管理 · 菜单管理 · 操作日志 · 登录日志 · IP 黑名单 · 友链管理
### 小程序端
文章浏览 · 分类筛选 · 文章搜索 · 评论点赞 · 微信登录 · 消息通知 · 个人中心 · 暗黑模式 · 国际化
---
## 可选配置
以下功能**不配置也能正常运行**,需要时按说明开启即可。
邮箱验证(密码找回)
```yaml
spring:
mail:
host: smtp.qq.com
port: 587
username: 你的QQ邮箱
password: QQ邮箱授权码 # 不是QQ密码,是授权码
```
获取授权码:QQ邮箱网页版 → 设置 → 账户 → 开启 SMTP 服务 → 生成授权码
阿里云 OSS 图片上传
```yaml
blog:
upload:
strategy: oss # 默认 local,改为 oss
aliyun:
oss:
endpoint: oss-cn-hangzhou.aliyuncs.com
access-key-id: 你的AccessKeyId
access-key-secret: 你的AccessKeySecret
bucket-name: 你的Bucket名称
```
Gitee / GitHub 社交登录
```yaml
oauth:
gitee:
client-id: 你的ClientId
client-secret: 你的ClientSecret
redirect-uri: http://localhost:3000/oauth/callback/gitee
github:
client-id: 你的ClientId
client-secret: 你的ClientSecret
redirect-uri: http://localhost:3000/oauth/callback/github
```
Gitee:https://gitee.com/oauth/applications 创建应用
GitHub:https://github.com/settings/developers 创建 OAuth App
Elasticsearch 全文搜索
```yaml
blog:
search:
type: elasticsearch # 默认 mysql
spring:
elasticsearch:
uris: http://localhost:9200
```
Docker 启动 ES:`docker-compose --profile search up -d`
RabbitMQ 消息队列
```yaml
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
listener:
simple:
auto-startup: true # 改为 true
```
Docker 启动:`docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:3-management`
---
## 部署
### Docker 一键部署
```bash
cp env.example .env # 复制配置模板
vim .env # 修改数据库密码等
docker-compose up -d # 启动所有服务
```
### 手动部署
```bash
# 后端打包
cd blog-backend && mvn clean package -DskipTests
java -jar target/blog-backend-1.0.0.jar
# 前端打包
cd blog-frontend && npm run build
# 将 dist 目录部署到 Nginx
```
Nginx 关键配置:
```nginx
location / {
root /path/to/dist;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:8080;
}
```
---
## 项目结构
```
Blog-Person/
├── blog-backend/ # 后端 SpringBoot
│ ├── src/main/java/com/blog/
│ │ ├── controller/ # 控制器(admin + api)
│ │ ├── service/ # 业务层
│ │ ├── mapper/ # 持久层
│ │ ├── entity/ # 实体类
│ │ ├── dto/ # 请求对象
│ │ ├── vo/ # 返回对象
│ │ ├── config/ # 配置类
│ │ └── utils/ # 工具类
│ └── src/main/resources/
│ ├── sql/init.sql # 数据库初始化脚本
│ └── application.yml # 配置文件
│
├── blog-frontend/ # 前端 Vue3
│ └── src/
│ ├── views/blog/ # 前台页面
│ ├── views/admin/ # 后台页面
│ ├── api/ # 接口封装
│ ├── stores/ # 状态管理
│ └── router/ # 路由
│
├── blog-miniprogram/ # 小程序 UniApp
│ └── src/
│ ├── pages/ # 页面
│ ├── api/ # 接口
│ └── stores/ # 状态管理
│
├── docker-compose.yml # Docker 编排
└── README.md
```
---
## 常见问题
| 问题 | 解决方案 |
|:-----|:---------|
| 数据库连接失败 | 检查 `application.yml` 中的数据库密码 |
| RabbitMQ 连接报错 | 将 `auto-startup` 设为 `false` |
| 前端接口 404 | 确认后端已启动,检查 Vite 代理配置 |
| 登录后无法访问后台 | 确认 Redis 正常运行,清除浏览器缓存重新登录 |
| 邮件发送失败 | 使用 QQ 邮箱**授权码**而非密码 |
---
## 开源协议
[MIT License](LICENSE) — 免费商用,可二次开发,需保留版权声明。
## 联系作者
- Gitee:[@CodingKeep](https://gitee.com/zhongshichaosss)
- 邮箱:3142277367@qq.com
- 微信:Keep4212
---
**如果觉得不错,请点个 ⭐ Star 支持一下!**
[](https://gitee.com/zhongshichaosss/Blog-Person/stargazers)
[](https://gitee.com/zhongshichaosss/Blog-Person/members)