paicoding is a free, open source databases project written in Java and released under Apache-2.0. It has 3,182 GitHub stars, 622 forks and 28 open issues, and was last pushed 17 days ago. On this registry it ranks #176 of 203 tracked projects in Databases, with 5 head-to-head comparisons available.

What is paicoding?

Paicoding (技术派) is an open-source community and content-publishing platform built with Spring Boot, MyBatis-Plus, MySQL, Redis, ElasticSearch, MongoDB, Docker and RabbitMQ, aimed at Java developers who want a real, self-hostable community site to run, study and extend.

What it is

Paicoding is a complete community system distributed as source code under the Apache-2.0 licence. Its README describes a modern internet-style architecture with a rewritten UI, one-click source deployment, and end-to-end flows for article and tutorial publishing, search, comments and statistics. The codebase is split into Maven modules — paicoding-api for shared enums, entities and DO/DTO/VO types, paicoding-core for utilities and shared components such as search, cache and recommendation, paicoding-service for business logic and database access, paicoding-ui for HTML, JavaScript, CSS and Thymeleaf resources, and paicoding-web for HTTP entry points, startup, permission checks and global exception handling. The authors state that the code is fully open with no secondary encapsulation, which is what makes it usable as a secondary-development base rather than a black box.

The concrete problem it solves sits inside the Java learning ecosystem. Instead of reading isolated chapters about concurrency, caching or messaging, a developer runs an application in which those concerns are already wired together: Liquibase manages schema evolution, Redis and ElasticSearch back the caching and search paths, RabbitMQ carries asynchronous work, and MongoDB holds data outside the relational model. Paicoding replaces the usual pattern of a tutorial project that stops at a toy CRUD screen with a working community whose publishing, search, commenting and statistics flows are themselves the curriculum. The published tutorials — a high-concurrency handbook, a JVM handbook, a Java concurrency handbook and 二哥的 Java 进阶之路 — are hosted on the same system, so the teaching material and the artifact are the same product.

Key capabilities

  • Complete article and tutorial lifecycle covering publishing, search, commenting and statistics as described in the README.
  • Modular Maven structure across paicoding-api, paicoding-core, paicoding-service, paicoding-ui and paicoding-web, with search, cache and recommendation logic isolated in paicoding-core.
  • Four build profiles selected through Maven: resources-env/dev, resources-env/test, resources-env/pre and resources-env/prod, switched with mvn clean install -DskipTests=true -Pprod.
  • Environment-based configuration files including application.yml, application-config.yml, logback-spring.xml, and per-environment application-dal.yml, application-image.yml and application-web.yml.
  • Secret management through .env and .env.local, seeded from .env.example, loaded by Spring Boot at startup and sourced by launch.sh and deploy.sh, with .env.local taking priority and both files excluded by .gitignore.
  • Named configuration keys such as PAICODING_DB_PASSWORD, PAICODING_OSS_AK, PAICODING_OSS_BUCKET, PAICODING_WX_APP_SECRET and provider keys for OpenAI, Zhipu, Xunfei, DeepSeek and Doubao.
  • Database schema managed by Liquibase, plus a 派聪明 AI assistant exposed at /chat and a separate Vue 3 and Spring Boot 3 branch on springboot3&vue3.

Who uses it and how

  • Java and Spring learners working through the accompanying tutorials, who read a handbook and then inspect the corresponding module in the running source tree.
  • Small teams that need a community or forum foundation and intend to modify it directly, using the Apache-2.0 licence and the absence of secondary encapsulation as the starting point.
  • Operators who deploy across the provided dev, test, pre and prod environments and separate secrets per machine with .env.local.
  • Administrators who run the back office from the separate paicoding-admin repository and follow its own README for deployment.
  • Teams working from mainland China, where the Gitee mirror at gitee.com/itwanger/paicoding is offered for faster access.

Getting started

Build from source with Maven using the target profile, for example mvn clean install -DskipTests=true -Pprod, after copying .env.example to .env and filling in the PAICODING_* values. The resulting jar is started through launch.sh or deploy.sh, both of which source the .env files automatically, and Docker is listed among the supported technologies for deployment.

How it compares

The provided facts name no competing projects and no paid products that Paicoding is positioned to replace, so no licence, hosting or cost comparison can be drawn here. It stands alone in this registry entry on that basis. What can be said from the facts is that its distinguishing feature is the pairing of a runnable multi-store community system with a written tutorial track covering the same technologies.

When to use it — and when not to

A self-hoster must operate MySQL, Redis, ElasticSearch, MongoDB and RabbitMQ, and will likely also need object storage credentials for image uploads, a WeChat application secret, and keys for at least one AI provider if the assistant is wanted; that is a substantial operational footprint for a community site. Anyone whose team cannot read Chinese should look elsewhere, because the README, the tutorials and the configuration comments are written in Chinese, and the front-end admin console lives in a separate repository with its own deployment instructions. There is no Docker image name or compose file in the facts, so first deployment realistically means a Maven build and a manual jar launch unless the reader supplies their own container setup.

project readme (upstream, from github) — read inline

技术派,让技术也能很好玩

一个基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈实现的社区系统,采用主流的互联网技术架构、全新的UI设计、支持一键源码部署,拥有完整的文章&教程发布/搜索/评论/统计流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发/实战的现代化社区项目👍 。

一、配套服务

  1. 技术派网址https://paicoding.com
  2. 技术派教程https://paicoding.com/column 目前已更新高并发手册、JVM 手册、Java 并发编程手册、二哥的 Java 进阶之路,以及技术派部分免费教程。我们的宗旨是:学编程,就上技术派😁
  3. 技术派管理端源码paicoding-admin
  4. 技术派专属学习圈子不走弯路,少采坑,附 120 篇技术派全套教程
  5. 派聪明AI助手:AI 时代,怎能掉队,欢迎体验 技术派的派聪明 AI 助手
  6. 码云仓库https://gitee.com/itwanger/paicoding (国内访问速度更快)

二、项目介绍

项目演示

前台社区系统

技术派首页

Vue 版前后端分离版本

这个版本对技术派进行了二次开发,将用户端的前端 UI 使用 Vue3 重写,并且将后端升级到 Spring Boot 3 版本,喜欢 Vue3 或者 Spring Boot 3 版本的球友可以看看这个分支。

编程汇vue3+Spring Boot3

后台社区系统

技术派后台管理系统

admin 端部署写在了 paicoding-admin 项目的 README.md 中,请注意查看⚠️。

代码展示

技术派源码结构

架构图

系统架构图

技术派系统架构图

业务架构图

技术派业务架构图

组织结构

paicoding
├── paicoding-api -- 定义一些通用的枚举、实体类,定义 DO\DTO\VO 等
├── paicoding-core -- 核心工具/组件相关模块,如工具包 util, 通用的组件都放在这个模块(以包路径对模块功能进行拆分,如搜索、缓存、推荐等)
├── paicoding-service -- 服务模块,业务相关的主要逻辑,DB 的操作都在这里
├── paicoding-ui -- HTML 前端资源(包括 JavaScript、CSS、Thymeleaf 等)
├── paicoding-web -- Web模块、HTTP入口、项目启动入口,包括权限身份校验、全局异常处理等
环境配置说明

资源配置都放在 paicoding-web 模块的资源路径下,通过maven的env进行环境选择切换

当前提供了四种开发环境

  • resources-env/dev: 本地开发环境,也是默认环境
  • resources-env/test: 测试环境
  • resources-env/pre: 预发环境
  • resources-env/prod: 生产环境

环境切换命令

# 如切换生产环境
mvn clean install -DskipTests=true -Pprod
配置文件说明
  • resources
    • application.yml: 主配置文件入口
    • application-config.yml: 全局的站点信息配置文件
    • logback-spring.xml: 日志打印相关配置文件
    • liquibase: 由liquibase进行数据库表结构管理
  • resources-env
    • xxx/application-dal.yml: 定义数据库相关的配置信息
    • xxx/application-image.yml: 定义上传图片的相关配置信息
    • xxx/application-web.yml: 定义web相关的配置信息
.env 配置说明

项目支持在仓库根目录通过 .env / .env.local 管理本地或服务器上的敏感配置。

  • 首次使用时,可复制 .env.example.env
  • Spring Boot 启动前会自动加载 .env / .env.local
  • launch.shdeploy.sh 启动 jar 时,也会自动 source 这两个文件
  • .env.local 适合放机器本地专属配置,优先级高于 .env
  • 进程环境变量和 -D 启动参数优先级仍然更高
  • .env.env.local 已加入 .gitignore,不会提交到仓库

示例:

cp .env.example .env

常见配置包括:

  • PAICODING_DB_PASSWORD
  • PAICODING_OPENAI_API_KEY
  • PAICODING_ZHIPU_API_SECRET_KEY
  • PAICODING_XUNFEI_APP_ID
  • PAICODING_XUNFEI_API_KEY
  • PAICODING_XUNFEI_API_SECRET
  • PAICODING_XUNFEI_API_PASSWORD
  • PAICODING_DEEPSEEK_API_KEY
  • PAICODING_DOUBAO_API_KEY
  • PAICODING_DOUBAO_ENDPOINT
  • PAICODING_WX_APP_SECRET
  • PAICODING_OSS_AK
  • PAICODING_OSS_SK
  • PAICODING_OSS_ENDPOINT
  • PAICODING_OSS_BUCKET
  • PAICODING_OSS_HOST

前端工程结构说明

技术选型

后端技术栈

技术 说明 官网
Spring & SpringMVC Java全栈应用程序框架和WEB容器实现 https://spring.io/
SpringBoot Spring应用简化集成开发框架 https://spring.io/projects/spring-boot
mybatis 数据库orm框架 https://mybatis.org
mybatis-plus 数据库orm框架 https://baomidou.com/
mybatis PageHelper 数据库翻页插件 https://github.com/pagehelper/Mybatis-PageHelper
elasticsearch 近实时文本搜索 https://www.elastic.co/cn/elasticsearch/service
redis 内存数据存储 https://redis.io
rabbitmq 消息队列 https://www.rabbitmq.com
mongodb NoSql数据库 https://www.mongodb.com/
nginx 服务器 https://nginx.org
docker 应用容器引擎 https://www.docker.com
hikariCP 数据库连接 https://github.com/brettwooldridge/HikariCP
oss 对象存储 https://help.aliyun.com/document_detail/31883.html
https 证书 https://letsencrypt.org/
jwt jwt登录 https://jwt.io
lombok Java语言增强库 https://projectlombok.org
guava google开源的java工具集 https://github.com/google/guava
thymeleaf html5模板引擎 https://www.thymeleaf.org
swagger API文档生成工具 https://swagger.io
hibernate-validator 验证框架 hibernate.org/validator/
quick-media 多媒体处理 https://github.com/liuyueyi/quick-media
liquibase 数据库版本管理 https://www.liquibase.com
jackson json/xml处理 https://www.jackson.com
ip2region ip地址 https://github.com/zoujingli/ip2region
websocket 长连接

readme truncated — read the full docs on github

Frequently asked questions

Is paicoding free to use?

paicoding is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does paicoding do?

⭐️一款好用又强大的开源社区,基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等主流技术栈,附详细教程,包括Java、Spring、MySQL、Redis、微服务&分布式、消息队列等核心知识点。学编程,就上技术派

What is paicoding written in?

paicoding is primarily written in Java. Its source is publicly available at https://github.com/itwanger/paicoding, and it has 3,182 GitHub stars.