# xpz
**Repository Path**: zhanglei-code/xpz
## Basic Information
- **Project Name**: xpz
- **Description**: xpz社区,轻量开源社区,发帖互动、消息通知、全文搜索、后台运营,前后端分离可独立部署。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://www.xpz01.cn
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-30
- **Last Updated**: 2026-08-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XPZ
> 轻量开源社区:发帖互动、消息通知、全文搜索、后台运营,前后端分离可独立部署。
[在线预览](https://xpz01.cn) · [在线工具](https://tools.xpz01.cn)
## 功能特性
**社区端**
- 帖子动态流(最新 / 热门 / 话题),发帖、评论、点赞、收藏
- 用户主页、关注 / 粉丝、每日签到与积分
- 全局搜索(Elasticsearch)、站内消息(WebSocket)
- 邮箱验证码注册 / 登录,Gitee / QQ / GitHub 等第三方登录
- 图片上传(阿里云 OSS)、意见反馈、友情链接
**管理端**
- 用户、帖子、评论、话题、友链、反馈管理
- 独立后台账号体系(JWT)
## 技术栈
| 层级 | 技术 |
|------|------|
| 社区 / 管理前端 | Vue 3 · Vue Router 4 · Element Plus · Axios |
| 社区 / 管理后端 | Spring Boot 2.5 · MyBatis-Plus · JWT · Hutool |
| 中间件 | MySQL · Redis · Elasticsearch 7.12 · RabbitMQ |
| 其他 | JustAuth(OAuth)· 阿里云 OSS · Spring Mail / WebSocket |
## 环境要求
| 工具 | 版本 |
|------|------|
| IntelliJ IDEA | 推荐 Ultimate / Community(后端导入运行) |
| JDK | 1.8 |
| Maven | 3.6+(可用 IDEA 自带) |
| Node.js | 16+(推荐 LTS) |
| MySQL | 5.7+ / 8.x |
| Redis | 3.x+ |
| Elasticsearch | **7.12.1**(与 `pom.xml` 锁定版本一致) |
| RabbitMQ | 3.x+(邮件验证码等异步任务) |
## 架构示意
```mermaid
flowchart TB
Browser["浏览器"]
ClientUI["xpz-client
社区前端 :8080"]
ClientAPI["xpz-client-server
:9015"]
subgraph Infra["基础设施"]
MySQL[(MySQL)]
Redis[(Redis)]
ES[(Elasticsearch)]
MQ[[RabbitMQ]]
OSS[阿里云 OSS]
end
Browser --> ClientUI
ClientUI -->|/api| ClientAPI
ClientAPI --> MySQL
ClientAPI --> Redis
ClientAPI --> ES
ClientAPI --> MQ
ClientAPI --> OSS
```
## 快速开始
1. 执行 `mysql -uroot -p < init.sql` 初始化库表(后台默认 `admin` / `admin123`)
2. 修改 `xpz-*-server/.../application-dev.properties` 中的本地配置
3. IDEA 分别打开 `xpz-client-server`、`xpz-admin-server`,运行 `XpzClientApplication`、`XpzAdminApplication`
4. 前端启动:
```bash
cd xpz-client && npm i && npm run serve # http://localhost:8080
cd xpz-admin && npm i && npm run serve # http://localhost:8087
```
## 配置说明(社区后端)
| 配置项 | 用途 |
|--------|------|
| `spring.datasource.*` | MySQL |
| `spring.redis.*` | 缓存、验证码、签到排行等 |
| `spring.elasticsearch.rest.*` | 帖子搜索 |
| `spring.rabbitmq.*` / `spring.mail.*` | 邮件验证码异步发送 |
| `aliyun.oss.*` | 图片上传 |
| `oauth.*.client-id/secret` | 第三方登录 |
管理端主要依赖 MySQL / Redis(以及帖子相关时的 ES),配置项更少。
## 效果展示
**桌面端 · 首页**
**桌面端 · 个人中心**
**移动端 · 首页**
**移动端 · 个人中心**
## 致谢
本项目基于以下优秀开源项目构建,在此致谢:
**前端**
| 项目 | 说明 | 地址 |
|------|------|------|
| Vue | 渐进式 JavaScript 框架 | https://github.com/vuejs/core |
| Vue Router | 官方路由 | https://github.com/vuejs/router |
| Element Plus | Vue 3 组件库 | https://github.com/element-plus/element-plus |
| Axios | HTTP 客户端 | https://github.com/axios/axios |
| undraw-ui | 评论 / 搜索等 UI 组件 | https://github.com/readpage/undraw-ui |
| vue-cropper | 图片裁剪 | https://github.com/xyxiao001/vue-cropper |
| browser-image-compression | 浏览器端图片压缩 | https://github.com/Donaldcwl/browser-image-compression |
**后端**
| 项目 | 说明 | 地址 |
|------|------|------|
| Spring Boot | 应用框架 | https://github.com/spring-projects/spring-boot |
| MyBatis-Plus | ORM 增强 | https://github.com/baomidou/mybatis-plus |
| JustAuth | 第三方登录 | https://github.com/justauth/JustAuth |
| Hutool | Java 工具库 | https://github.com/dromara/hutool |
| java-jwt | JWT | https://github.com/auth0/java-jwt |
| Lombok | 代码简化 | https://github.com/projectlombok/lombok |
| Aliyun OSS SDK | 对象存储 | https://github.com/aliyun/aliyun-oss-java-sdk |
## 参与贡献
欢迎 Issue 与 Pull Request:
1. Fork 本仓库并创建分支:`feat/xxx` 或 `fix/xxx`
2. 保持改动聚焦,附上问题复现或功能说明
3. 提交 PR 前尽量自行本地跑通社区端核心流程(登录 → 发帖 → 评论)
## License
[MIT](./LICENSE) © 2026 zhanglei