You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
paopao-ce/README_ZH.md

250 lines
8.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<div id="top"></div>
[![Go](https://github.com/rocboss/paopao-ce/actions/workflows/go.yml/badge.svg)](https://github.com/rocboss/paopao-ce/actions/workflows/go.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/rocboss/paopao-ce)](https://goreportcard.com/report/github.com/rocboss/paopao-ce)
[![Forks](https://img.shields.io/github/forks/rocboss/paopao-ce?style=flat)](https://github.com/rocboss/paopao-ce/network/members)
[![Stars](https://img.shields.io/github/stars/rocboss/paopao-ce.svg?style=flat)](https://github.com/rocboss/paopao-ce/stargazers)
[![MIT License](https://img.shields.io/github/license/rocboss/paopao-ce.svg?style=flat)](https://github.com/rocboss/paopao-ce/blob/main/LICENSE)
[![Contributors](https://img.shields.io/github/contributors/rocboss/paopao-ce?style=flat)](https://github.com/rocboss/paopao-ce/graphs/contributors)
[![Sourcegraph](https://img.shields.io/badge/view%20on-Sourcegraph-brightgreen.svg)](https://sourcegraph.com/github.com/rocboss/paopao-ce)
<div align="center">
<a href="https://github.com/rocboss/paopao-ce">
<img src="./.assets/readme/paopao-logo.png" alt="PaoPao logo" width="88" height="88">
</a>
<h1 align="center">PaoPao</h1>
<p align="center">
一个基于 Go 与 Vue 的开源微社区平台。
<br />
适合自部署社区产品、功能验证,以及在现有能力之上进行二次开发。
</p>
<p align="center">
<a href="README.md">English</a>
·
<a href="https://paopao-demo.vercel.app/">在线演示</a>
·
<a href="https://github.com/rocboss/paopao-ce/pulls">Pull Requests</a>
·
<a href="https://www.yuque.com/rocs/paopao/about">项目笔记</a>
</p>
</div>
---
## 项目简介
PaoPao 是一个完整的开源微社区系统,包含 Go 后端、Vue 3 Web 前端,以及可选的 Tauri 桌面端。项目通过模块化的特性开关体系,将存储、搜索、日志、可观测性与部署方式组合在一起,便于按需裁剪和扩展。
如果你希望快速搭建一个可运行的社区产品或者基于成熟代码库继续定制开发而不是从零开始PaoPao 是一个很合适的起点。
## 为什么选择 PaoPao
- **全栈一体化**后端、Web 前端、桌面端构建都在同一仓库中维护。
- **模块化运行能力**:通过 `Features` 套件启用不同能力组合,例如 `Default`、`Develop`、`Demo`、`Slim`。
- **基础设施灵活**:支持 MySQL、PostgreSQL、SQLite、Redis、Meilisearch 以及多种对象存储后端。
- **部署方式丰富**可通过源码、Docker、Docker Compose 或 all-in-one 镜像运行。
- **适合自部署**:配置文件清晰,仓库内已提供部署与开发文档。
## 预览
### Web 端
[![明色主题预览](./.assets/readme/preview-light.jpeg)](https://paopao-demo.vercel.app)
[![暗色主题预览](./.assets/readme/preview-dark.jpeg)](https://paopao-demo.vercel.app)
### 桌面端
![](docs/proposal/.assets/000-00.jpg)
更多效果可前往 [PaoPao](https://paopao-demo.vercel.app/) 查看。
## 架构概览
| 层级 | 主要技术 |
| --- | --- |
| 后端 | Go、Gin、Cobra、GORM、Mir |
| Web 前端 | Vue 3、Vite、Naive UI |
| 桌面端 | Tauri |
| 搜索 | Meilisearch |
| 缓存 | Redis |
| 对象存储 | Local OSS、MinIO、AliOSS、COS、Huawei OBS、S3 兼容存储 |
| 可观测性 | OpenTelemetry、Sentry、Pyroscope、Pprof |
## 仓库结构
| 路径 | 说明 |
| --- | --- |
| `cmd/`、`internal/`、`pkg/` | 后端应用与共享包 |
| `web/` | Vue 3 Web 应用与 Tauri 桌面端前端 |
| `docs/` | 部署文档、OpenAPI 文档、设计提案等 |
| `scripts/` | SQL 初始化脚本与辅助资源 |
| `config.yaml.sample` | 完整的运行配置模板 |
## 快速开始
### 方案 A使用 Docker Compose 快速体验
这是本地体验项目的最快方式。
```sh
git clone https://github.com/rocboss/paopao-ce.git
cd paopao-ce
docker compose up -d
```
启动后可访问:
- `http://localhost:8008` - PaoPao
- `http://localhost:7700` - Meilisearch
- `http://localhost:8001` - RedisInsight
### 方案 B从源码开发
#### 环境要求
- Go `1.24+`
- Node.js `20.19+``22.12+`
- MySQL `5.7+`
- Redis
- Meilisearch
- 如果需要构建桌面端,还需要安装 Rust 与 Tauri 依赖
#### 后端
1.`scripts/paopao-mysql.sql` 导入 MySQL。
2. 复制示例配置,并只调整与你环境相关的启动关键项。
3. 启动后端服务。
```sh
cp config.yaml.sample config.yaml
make run
```
如果需要构建发布二进制:
```sh
make build
```
如果希望由 Go 服务直接内嵌并提供 Web UI请先构建前端资源再使用 `embed` 标签启动:
```sh
make build-web
make run TAGS='embed'
```
#### Web 前端
```sh
cd web
cp .env .env.local
yarn
yarn dev
```
构建静态资源:
```sh
yarn build
```
#### 桌面端
```sh
cd web
yarn tauri build
```
更完整的安装步骤、Docker 构建方式、桌面端依赖与 migration 说明,请参考 [INSTALL_ZH.md](INSTALL_ZH.md)。
## 配置与 Feature 套件
`config.yaml.sample` 现在是一个**最小化 bootstrap 模板**。运行时PaoPao 会先加载内置默认配置,再叠加 `./custom/config.yaml``./config.yaml`,并优先使用先找到的文件。
这意味着外部配置文件可以有意保持精简。当前建议是:
- **继续放在 YAML 中**端口、Feature 组合、数据库、Redis、JWT以及 `AdminSettings.EncryptionKey`
- **尽量改到管理后台**`/#/admin/settings`):站点资料、应用行为阈值、全文索引、对象存储、短信/支付等已接入 registry 的配置
- **注意生效方式**:部分配置即时生效,部分会在后台中明确标记为“重启后生效”
`Features` 配置用于控制启用哪些能力组合:
```yaml
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerOtlp"]
Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerOtlp"]
Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
Base: ["Zinc", "Redis", "Alipay"]
Option: ["SimpleCacheIndex"]
Sms: "SmsJuhe"
```
常见用法示例:
```sh
# 使用默认套件
release/paopao serve
# 仅使用 develop 中声明的功能集
release/paopao serve --no-default-features --features develop
# 在默认套件基础上增加 sms
release/paopao serve --features sms
# 手动显式指定功能项
release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis
```
各功能项的当前实现状态可参考 [features-status.md](features-status.md)。
## 文档导航
- [INSTALL_ZH.md](INSTALL_ZH.md) - 中文安装、Docker 使用与桌面端构建说明
- [INSTALL.md](INSTALL.md) - English installation guide
- [docs/README_ZH.md](docs/README_ZH.md) - 中文文档总索引
- [docs/README.md](docs/README.md) - English documentation index
- [docs/deploy/](docs/deploy/) - 部署相关文档
- [docs/openapi/](docs/openapi/) - 导出的 API 文档资源
- [docs/proposal/](docs/proposal/) - 设计说明与功能提案
- [deployed-sites.md](deployed-sites.md) - 已知部署站点列表
- [ROADMAP.md](ROADMAP.md) - 路线图与规划说明
## 分支策略
项目采用分阶段分支模型:
| 分支 | 作用 |
| --- | --- |
| `main` | 稳定生产分支,主要接收缺陷修复 |
| `beta` | 公测分支 |
| `alpha` | 内测分支 |
| `dev` | 主要开发分支,适合新功能开发 |
| `feature/*` | 独立功能分支 |
| `r/*` | 面向不同发行形态的发布分支 |
如果你准备提交新功能,通常应优先向 **`dev`** 分支发起贡献。
## 参与贡献
欢迎提交 Pull Request。建议的贡献流程
1. Fork 当前仓库。
2.`dev` 分支拉出自己的功能分支。
3. 保持改动聚焦,并补充必要文档。
4. 提交 PR 时说明问题背景、实现方式与验证结果。
如果你已经部署了自己的实例,也欢迎将站点补充到 [deployed-sites.md](deployed-sites.md)。
[![Star History Chart](https://api.star-history.com/svg?repos=rocboss/paopao-ce&type=Date)](https://star-history.com/#rocboss/paopao-ce&Date)
## License
项目基于 MIT License 发布,详见 [LICENSE](LICENSE)。
<p align="right">(<a href="#top">回到顶部</a>)</p>