An open-source micro-community platform built with Go and Vue.
Designed for self-hosted social products, community experiments, and customizable deployments.
PaoPao is a full-stack, open-source micro-community system. It combines a Go backend, a Vue 3 web client, and an optional Tauri desktop application, with a modular feature system for storage, search, logging, observability, and deployment strategy.
The repository is suitable for teams or individuals who want to run a community product, evaluate an extensible social platform, or build on top of an existing codebase instead of starting from scratch.
- Full-stack delivery: backend, web frontend, and desktop packaging live in one repository.
- Modular runtime features: enable different capability sets through
Featuressuites such asDefault,Develop,Demo, andSlim. - Flexible infrastructure: supports MySQL, PostgreSQL, SQLite, Redis, Meilisearch, and multiple object storage providers.
- Multiple deployment paths: run from source, Docker, Docker Compose, or all-in-one container images.
- Self-hosting friendly: configuration is file-based and operational docs are already included in the repo.
More screenshots and live behavior are available at PaoPao.
| Layer | Primary stack |
|---|---|
| Backend | Go, Gin, Cobra, GORM, Mir |
| Web frontend | Vue 3, Vite, Naive UI |
| Desktop client | Tauri |
| Search | Meilisearch |
| Cache | Redis |
| Object storage | Local OSS, MinIO, AliOSS, COS, Huawei OBS, S3-compatible |
| Observability | OpenTelemetry, Sentry, Pyroscope, Pprof |
| Path | Purpose |
|---|---|
cmd/, internal/, pkg/ |
Backend application and shared packages |
web/ |
Vue 3 web application and Tauri desktop frontend |
docs/ |
Deployment, OpenAPI, design proposals, and related documentation |
scripts/ |
SQL bootstrap and helper assets |
config.yaml.sample |
Complete runtime configuration template |
This is the fastest way to bring up a local environment for evaluation.
git clone https://github.com/rocboss/paopao-ce.git
cd paopao-ce
docker compose up -dThen open:
http://localhost:8008- PaoPaohttp://localhost:7700- Meilisearchhttp://localhost:8001- RedisInsight
- Go
1.24+ - Node.js
20.19+or22.12+ - MySQL
5.7+ - Redis
- Meilisearch
- Rust + Tauri prerequisites if you plan to build the desktop app
- Import
scripts/paopao-mysql.sqlinto MySQL. - Copy the sample config and adjust only the bootstrap-critical values for your environment.
- Start the backend.
cp config.yaml.sample config.yaml
make runTo build a release binary instead:
make buildTo serve the embedded web UI from the Go binary, build the web assets first and run with the embed tag:
make build-web
make run TAGS='embed'cd web
cp .env .env.local
yarn
yarn devTo produce static assets:
yarn buildcd web
yarn tauri buildFor the full installation guide, Docker build variants, desktop prerequisites, and migration notes, see INSTALL.md.
config.yaml.sample is now a minimal bootstrap template. At runtime, PaoPao loads the embedded default config first, then overlays ./custom/config.yaml or ./config.yaml if present, preferring the first file it finds.
That means the external config can stay intentionally small. In the current design:
- Keep in YAML: ports, feature selection, database, Redis, JWT, and
AdminSettings.EncryptionKey - Prefer the admin UI (
/#/admin/settings): site profile, app behavior limits, search provider settings, object-storage settings, SMS/payment settings, and other operational knobs supported by the registry - Watch apply mode: some settings are live, while others are marked restart-required in the admin page
The Features section controls which capability bundles are enabled:
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"Typical examples:
# Use the default suite
release/paopao serve
# Use only the declared develop suite
release/paopao serve --no-default-features --features develop
# Add sms on top of the default suite
release/paopao serve --features sms
# Enable features explicitly
release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redisFor the current implementation status of each feature, see features-status.md.
- INSTALL.md - installation, Docker usage, and desktop build instructions
- INSTALL_ZH.md - Chinese installation guide
- docs/README.md - documentation index
- docs/README_ZH.md - Chinese documentation index
- docs/deploy/ - deployment documentation
- docs/openapi/ - exported API documentation assets
- docs/proposal/ - design notes and feature proposals
- deployed-sites.md - known deployed instances
- ROADMAP.md - roadmap and planning notes
The project uses a staged branch model:
| Branch | Role |
|---|---|
main |
Stable production branch; bug-fix oriented |
beta |
Public testing branch |
alpha |
Internal testing branch |
dev |
Main development branch for new work |
feature/* |
Focused feature branches |
r/* |
Distribution-oriented release branches |
If you plan to contribute new functionality, target dev unless the maintainers specify otherwise.
Pull requests are welcome. If you want to contribute:
- Fork the repository.
- Create a branch from
devfor feature work. - Keep changes focused and documented.
- Open a PR with context about the problem, approach, and verification.
If you deploy your own instance, consider adding it to deployed-sites.md.
Distributed under the MIT License. See LICENSE for details.