MCPcopy Index your code
hub / github.com/rocboss/paopao-ce

github.com/rocboss/paopao-ce @v0.6.0-alpha.3 sqlite

repository ↗ · DeepWiki ↗ · release v0.6.0-alpha.3 ↗
3,422 symbols 7,583 edges 326 files 260 documented · 8%
README

Go Go Report Card Forks Stargazers MIT License Contributors Sourcegraph

Logo

PaoPao

🔥一个清新文艺的微社区



<a href="https://www.paopao.info/">View Demo</a>
·
<a href="https://github.com/rocboss/paopao-ce/pulls">Pull Request</a>
·
<a href="https://www.yuque.com/rocs/paopao/about">Features</a>

预览

Web端:
明色主题

暗色主题

更多演示请前往官网体验(谢绝灌水)

桌面端:

(back to top)

🛠 技术栈

PaoPao主要由以下优秀的开源项目/工具构建

后端:

前端:

🏗 快速开始

环境要求

  • Go (1.22+)
  • Node.js (14+)
  • MySQL (5.7+)
  • Redis
  • Meilisearch

以上环境版本为PaoPao官方的开发版本,仅供参考,其他版本的环境未进行充分测试

安装说明

参考 安装说明 (INSTALL.md);

开发文档

Docs文档说明

docs目录提供了各种开发文档,包括:
* deploy - paopao-ce部署文档 * openapi - paopao-ce后端导出API文档 * proposal - paopao-ce功能特性提按文档

比如,关于paopao-ce的设计定位,可以参考docs/proposal/22110411-关于paopao-ce的设计定位,简要阐述了paopao-ce是如何定位自身的。

配置说明

config.yaml.sample 是一份完整的配置文件模版,paopao-ce启动时会读取./custom/config.yaml./config.yaml任意一份配置文件(优先读取最先找到的文件)。

cp config.yaml.sample config.yaml
vim config.yaml # 修改参数
paopao serve

配置文件中的 Features 小节是声明paopao-ce运行时开启哪些功能项:

...

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"

...

如上: Default/Develop/Demo/Slim 是不同 功能集套件(Features Suite), Base/Option 是子功能套件, Sms是关于短信验证码功能的参数选项。

这里 Default套件 代表的意思是: 使用Base/Option 中的功能,外加 MySQL/LocalOSS/LoggerFile功能,也就是说开启了Zinc/Redis/Alipay/SimpleCacheIndex/MySQL/LocalOSS/LoggerFile 7项功能; Develop套件依例类推。

使用Feautures:

release/paopao serve --help
Usage of release/paopao:
  -features value
        use special features
  -no-default-features
        whether use default features

# 默认使用 Default 功能套件
release/paopao serve

# 不包含 default 中的功能集,仅仅使用 develop 中声明的功能集
release/paopao serve --no-default-features --features develop 

# 使用 default 中的功能集,外加 sms 功能
release/paopao serve --features sms  

# 手动指定需要开启的功能集
release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis 

目前支持的功能集合: | 功能项 | 类别 | 状态 | 备注 | | ----- | ----- | ----- | ----- | |Web | 子服务 | 内测 | 开启Web服务| |Admin | 子服务 | WIP | 开启Admin后台运维服务| |SpaceX | 子服务 | WIP | 开启SpaceX服务| |Bot | 子服务 | WIP | 开启Bot服务| |NativeOBS | 子服务 | WIP | 开启NativeOBS服务| |Docs | 子服务 | WIP | 开启开发者文档服务| |Frontend:Web | 子服务 | 稳定 | 开启独立前端服务| |Frontend:EmbedWeb | 子服务 | 稳定 | 开启内嵌于后端Web API服务中的前端服务| |Gorm | 数据库 | 稳定(默认) | 使用gorm作为数据库的ORM,默认使用 Gorm + MySQL组合| |Sqlx| 数据库 | WIP | 使用sqlx作为数据库的ORM| |Sqlc| 数据库 | WIP | 使用sqlc自动生成ORM代码| |MySQL| 数据库 | 稳定(默认) | 使用MySQL作为数据库| |Postgres| 数据库 | 稳定 | 使用PostgreSQL作为数据库| |Sqlite3| 数据库 | 稳定 | 使用Sqlite3作为数据库| |AliOSS | 对象存储 | 稳定(推荐) |阿里云对象存储服务| |COS | 对象存储 | 内测 |腾讯云对象存储服务| |HuaweiOBS | 对象存储 | 内测 |华为云对象存储服务| |MinIO | 对象存储 | 稳定 |MinIO对象存储服务| |S3 | 对象存储 | 内测 |AWS S3兼容的对象存储服务| |LocalOSS | 对象存储 | 内测 |提供使用本地目录文件作为对象存储的功能,仅用于开发调试环境| |OSS:Retention | 对象存储 | 内测 |基于对象存储系统的对象过期自动删除特性实现 先创建临时对象再持久化的功能| |OSS:TempDir | 对象存储 | 内测 |基于对象存储系统的对象拷贝/移动特性实现 先创建临时对象再持久化的功能| |Redis | 缓存 | 稳定 | Redis缓存功能 | |SimpleCacheIndex | 缓存 | Deprecated | 提供简单的 广场推文列表 的缓存功能 | |BigCacheIndex | 缓存 | Deprecated | 使用BigCache缓存 广场推文列表,缓存每个用户每一页,简单做到千人千面 | |RedisCacheIndex | 缓存 | Deprecated | 使用Redis缓存 广场推文列表,缓存每个用户每一页,简单做到千人千面 | |Zinc | 搜索 | Deprecated | 基于Zinc搜索引擎提供推文搜索服务 | |Meili | 搜索 | 稳定(推荐) | 基于Meilisearch搜索引擎提供推文搜索服务 | |Bleve | 搜索 | WIP | 基于Bleve搜索引擎提供推文搜索服务 | |Sentry | 监控 | 内测 | 使用Sentry进行错误跟踪与性能监控 | |LoggerFile | 日志 | 稳定 | 使用文件写日志 | |LoggerZinc | 日志 | Deprecated | 使用Zinc写日志 | |LoggerMeili | 日志 | Deprecated | 使用Meilisearch写日志 | |LoggerOpenObserve | 日志 | Deprecated | 使用OpenObserve写日志 | |LoggerOtlp | 日志 | 内测 | 使用OpenTelemetry写日志 | |Friendship | 关系模式 | 内置 Builtin | 弱关系好友模式,类似微信朋友圈 | |Followship | 关系模式 | 内置 Builtin | 关注者模式,类似Twitter的Follow模式 | |Lightship | 关系模式 | 弃用 Deprecated | 开放模式,所有推文都公开可见 | |Alipay | 支付 | 稳定 | 开启基于支付宝开放平台的钱包功能 | |Sms | 短信验证 | 稳定 | 开启短信验证码功能,用于手机绑定验证手机是否注册者的;功能如果没有开启,手机绑定时任意短信验证码都可以绑定手机 | |Docs:OpenAPI | 开发文档 | 稳定 | 开启openapi文档功能,提供web api文档说明(visit http://127.0.0.1:8008/docs/openapi) | |Pyroscope| 性能优化 | 内测 | 开启Pyroscope功能用于性能调试 |
|Pprof| 性能优化 | 内测 | 开启Pprof功能收集Profile信息 |
|PhoneBind | 其他 | 稳定 | 手机绑定功能 |
|UseAuditHook | 其他 | 内测 | 使用审核hook功能 |
|DisableJobManager | 其他 | 内测 | 禁止使用JobManager功能 |
|Web:DisallowUserRegister | 功能特性 | 稳定 | 不允许用户注册 |

功能项状态详情参考 features-status.

源代码分支管理

主代码库github.com/rocboss/paopao-ce

git branch
main
beta
dev
feature/followship
jc/alimy
r/paopao-plus
r/paopao-pro
x/sqlc
x/sqlx

分支说明
| 名称 | 说明 | 备注| | ----- | ----- | ----- |
| main | 主分支 |分支main是主分支,也是paopao-ce的稳定版本发布分支,只有经过内部测试,没有重大bug出现的稳定代码才会推进到这个分支;该分支主要由beta分支代码演进而来,原则上只接受bug修复PRrc版本/稳定版本 发布都应该在main主分支中进行。| | beta | 公测分支 |分支beta是公测分支,代码推进到main主分支的候选分支;该分支主要由alpha分支代码演进而来,接受bug修复以及新功能优化的PR,原则上不接受新功能PR。beta版本 发布都应该在beta公测分支下进行。| | alpha | 内测分支 |分支alpha是内测分支,代码推进到beta分支的候选分支;该分支主要由dev分支代码演进而来,接受bug修复以及新功能相关的PR,接受新功能PR。分支代码演进到一个里程碑式的阶段后冻结所有新功能,合并代码到beta公测分支进行下一阶段的持续演进。alpha版本 发布都应该在alpha内测分支下进行。|
| dev | 开发分支 | 分支dev是开发分支,不定期频繁更新,接受 新功能PR、代码优化PR、bug修复PR新功能PR 都应该首先提交给dev分支进行合并,bug修复/新功能开发/代码优化 阶段性冻结 后将代码演进合并到alpha分支。|
| feature/* | 子功能分支 |feature/*是新功能子分支,一般新功能子分支都是 dev开发分支fork出来的;子功能分支 只专注于该新功能 代码的开发/优化,待开发接近内测阶段 提交新功能PR给dev分支进行review/merge,待新功能代码演进到beta分支后,原则上是可以删除该分支,但也可以保留到稳定版本发布。该分支专注于新功能的开发,只接受新功能的bug修复/优化PR。| | jc/* |维护者的开发分支|jc/*是代码库维护者的开发分支,一般包含一些局部优化或者bug修复代码,有时可以直接将代码merge到dev/beta分支,原则上不允许直接merge代码到main主分支。| | x/* |实验分支|x/*是技术实验分支,某些技术的引入需要经过具体的代码实现与真实场景的测评,考量评估后如果某项技术适合引入到paopao-ce,就fork出一个feature/*分支,作为新功能引入到paopao-ce。一般一些比较激进的技术,从dev分支fork出一个新的x/*分支,各种尝试、考量、评估后,或丢弃、或引入到paopao-ce。|
| t/* | 临时分支 |t/*是临时发版本分支,一般 beta 分支演进到正式版本发布前的最后某个beta版本(比如v0.2.0-beta)就从beta分支fork出一个 t/* 分支用于向 main 分支提交 PR 用于Review,待 PR Reviewed 合并到 main 分支后,可以删除这个临时创建的分支。这样设计主要是考虑到有时合并到 main 分支时,需要Review的时间可能会长一些,而dev分支的代码又急需推进到beta分支以发布下一个alpha版本用于内测,相当于为下一个测试版本发布腾地方。|
| r/* |发行版本分支|r/*是不同发行版本分支,不同发行版本各有不同的侧重点,可以根据需要选择适合的发行版本。|

发行版本分支说明
| 名称 | 说明 | 维护者 | 备注 | | ----- | ----- | ----- | ----- |
|paopao-ce|paopao-ce 主发行版本|ROC|该分支 数据逻辑层 使用gorm作为数据逻辑层的ORM框架,适配MySQL/PostgreSQL/Sqlite3数据库。| |r/paopao-ce|paopao-ce 主分支预览版本|ROC

北野|该分支 数据逻辑层 使用gorm作为数据逻辑层的ORM框架,适配MySQL/PostgreSQL/Sqlite3数据库。代码较main分支新,是主发行版本的前瞻预览版本。| |r/paopao-ce-plus|paopao-ce-plus 发行版本|北野|该分支 数据逻辑层 使用sqlx作为数据逻辑层的ORM框架,专注于为MySQL/PostgreSQL/Sqlite3使用更优化的查询语句以提升数据检索效率。建议熟悉sqlx的开发人员可以基于此版本来做 二次开发。| |r/paopao-ce-pro|paopao-ce-pro 发行版本|北野|该分支 数据逻辑层 使用sqlc作为sql语句生成器自动生成ORM代码,专门针对特定数据库MySQL/PostgreSQL进行查询优化,熟悉sqlc的开发人员可以基于此版本来做 二次开发。(另:分支目前只使用pgx-v5适配了PostgreSQL数据库,后续或许会适配MySQL/TiDB数据库。)| |r/paopao-ce-xtra|paopao-ce-xtra 发行版本|北野|该分支 是r/paopao-ce、r/paopao-ce-plus、r/paopao-ce-pro的合集| |r/paopao-ce-mini|paopao-ce-mini 发行版本|北野|该分支是paopao-ce最小可用版本,专注于个人部署、一键傻瓜式最简部署|

代码分支演进图

部署站点信息

👯‍♀️ 贡献

paopao-ce 是一个利用 业余时间 本着 "Just for fun just do it." 的心态 持续有序 开发/优化/维护的开源项目,没有KPI考核、没有Roadmap进度压力、没有技术支持日程安排,或许有些许不足之处,但是重在精神可嘉。 借用网络中的话 "F*k talk, f*k of tech innovation, Shut up and show me your code." 一切都因更好的体验,一切都是为了爱好,一切都在代码里;期待老铁们加入,一起开发、一起折腾、一起快乐。

喜欢的朋友记得给个Star,欢迎贡献PR。

Star History Chart

License

Distributed under the MIT License. See LICENSE for more information.

Extension points exported contracts — how you extend this code

OssCreateService (Interface)
OssCreateService Object Storage System Object Create service [13 implementers]
internal/core/storage.go
NamingStrategy (Interface)
NamingStrategy naming strategy interface [2 implementers]
pkg/naming/naming.go
PageInfoSetter (Interface)
(no doc) [4 implementers]
internal/servants/base/base.go
AsyncClient (Interface)
AsyncClient asynchronous client interface [1 implementers]
pkg/http/client.go
OpenObserveClient (Interface)
OpenObserveClient OpenObserve client interface [1 implementers]
pkg/obx/obx.go
JobManager (Interface)
JobManager job manger interface [1 implementers]
internal/infra/events/jobs.go
Boxes (Interface)
Boxes Box/Unbox interface
pkg/types/types.go
CommentItemProps (Interface)
评论内容
web/src/types/Item.d.ts

Core symbols most depended-on inside this repo

B
called by 397
docs/openapi/assets/rapidoc-min.js
Render
called by 149
auto/api/m/v1/user.go
NewError
called by 106
pkg/xerror/xerror.go
Handle
called by 80
pkg/http/mux.go
request
called by 67
web/src/utils/request.ts
t
called by 66
docs/openapi/assets/rapidoc-min.js
Wb
called by 62
docs/openapi/assets/rapidoc-min.js
r
called by 61
docs/openapi/assets/rapidoc-min.js

Shape

Method 1,578
Function 1,045
Struct 457
Interface 229
TypeAlias 61
Class 44
Enum 7
FuncType 1

Languages

Go68%
TypeScript32%

Modules by API surface

docs/openapi/assets/rapidoc-min.js848 symbols
internal/dao/jinzhu/tweets.go74 symbols
internal/core/tweets.go61 symbols
auto/api/v1/priv.go61 symbols
web/src/types/NetParams.d.ts57 symbols
internal/conf/setting.go57 symbols
web/src/types/NetReq.d.ts52 symbols
internal/model/web/priv.go48 symbols
internal/core/cache.go42 symbols
auto/api/v1/core.go39 symbols
internal/servants/web/priv.go38 symbols
internal/servants/web/events.go34 symbols

Dependencies from manifests, versioned

github.com/Masterminds/semver/v3v3.2.1 · 1×
github.com/afocus/captchav0.0.0-2019101009284 · 1×
github.com/alimy/mir/v4v4.2.0-alpha.5 · 1×
github.com/alimy/trystv1.1.0 · 1×
github.com/aliyun/aliyun-oss-go-sdkv3.0.2+incompatible · 1×
github.com/allegro/bigcache/v3v3.1.0 · 1×
github.com/andybalholm/brotliv1.1.0 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/bits-and-blooms/bitsetv1.12.0 · 1×

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add paopao-ce \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact