Open-source project
ballcat-projects/ballcat avatar
ballcat-projects/ballcat

Ballcat splits an admin platform into Maven modules

😸一个快速开发脚手架,快速搭建企业级后台管理系统,并提供多种便捷starter进行功能扩展。主要功能包括前后台用户分离,菜单权限,数据权限,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入,国际化 等多种功能

1,728 stars316 forksJavaApache-2.0

At a glance

What is it?
Ballcat is a Spring Boot based scaffold for enterprise admin systems, published to Maven Central as a set of small starters rather than one framework, with separate modules for data permissions, desensitisation, idempotency, XSS filtering, operation logs and more. The catch is stated in the README: master is 2.x and still in development, while the stable line lives on the 1.x branch.
Who is it for?
Adopt Ballcat for an internal admin system on Spring Boot where menu and data permissions, operation logging and XSS filtering are all needed, and pin to a 1.x release since master is an in-development 2.x line. Do not adopt it if you need a single dependency to reason about, because each capability is its own artifact with its own upgrade path.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 101 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • ballcat-projects/ballcat1,728 ★ · -2
Star history
Repository2026-10-172026-11-07
ballcat-projects/ballcat1.7k1.7k

-2 Stars in the last 21 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

A component set, not a framework

The project describes itself as a scaffold for quickly building enterprise admin systems, with starters for extending it. What arrives in Maven Central is a set of artifacts, and the repository root makes the decomposition plain: `security/`, `datascope/`, `operation-log/`, `xss/`, `idempotent/`, `i18n/`, `job/`, `excel/`, `mail/`, `sms/`, `pay/`, `oss/`, `redis/`, `kafka/`, `grpc/`, `openapi/`, `websocket/`, `mybatis-plus/`, `file/`, `ip/`, `ntp/`, `dingtalk/`, `tesseract/`, `fieldcrypt/` and `desensitize/`, alongside `common/` and `web/`.

Three more directories at the root are build infrastructure rather than features: `ballcat-parent/`, `ballcat-dependencies/` for managed versions, and `ballcat-checkstyle/` for the code style rules, with a matching `.springjavaformatconfig` file. There is also an `api-signature/` directory and an `api-signature` concern that reappears in the repository layout, which is the pattern for keeping public method signatures stable across versions.

The result is that you adopt capabilities, not a framework. A project wanting only data-scope filtering pulls `datascope` and leaves the other modules alone. That is a genuinely different model from the all-or-nothing quickstart templates that dominate this category, and it is the main reason to look at this project at all.

The feature list maps onto real admin requirements

The description enumerates what the scaffold covers, and the names are more informative than they first appear.

Separation of front-end and back-end users means two distinct account domains rather than one table with a role column, which is the pattern most multi-tenant admin systems in China require. Menu permissions and data permissions are different problems, and the repository has a `datascope/` module for the second one, alongside `security/` for authentication and authorisation.

The observability set is split into three modules by intent rather than lumped together: access logs, operation logs and exception logs, with `operation-log/` as its own artifact. Logging who changed which row is the feature teams discover they needed six months after launch.

The defensive modules are the interesting ones for a reviewer. `xss/` handles XSS filtering, and the description names SQL injection prevention as well. `desensitize/` covers data masking for sensitive fields and `fieldcrypt/` covers field-level encryption, which are different requirements that often get conflated into one vague word in a specification. `idempotent/` is there for duplicate request handling, and `tesseract/` for OCR, which suggests document handling was a real use case rather than a listed intention.

Internationalisation is a first-class module in `i18n/`, alongside `ntp/` for time synchronisation, which matters more than it sounds for audit logs that must be comparable across servers.

Where to get it, and the snapshot caveat

The README states that all JAR artifacts have been pushed to the Maven central repository, and that a detailed changelog is listed for each version upgrade. So installation is a matter of adding the artifacts you want as Maven dependencies and resolving them normally.

If you want the SNAPSHOT builds instead, the README gives a specific repository configuration to add to your pom.xml:

xml
<repositories>
  <repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

Documentation is split by version, with a 1.x site at v1.ballcat.cn and a 2.x site at v2.ballcat.cn, and the repository is mirrored across GitHub, Gitee and GitCode.

The companion repositories are where the actual application lives. `ballcat-boot` is the admin server template, `ballcat-codegen` is the code generator, `ballcat-business` holds common business modules, and there are three front ends: `ballcat-ui-react`, `ballcat-admin-ui-vue3` and `ballcat-ui-vue` for Vue 2. `ballcat-samples` holds usage examples for the components. The starter repositories list is the practical selection surface, since picking a scaffold means picking a front end and a server template.

master is 2.x and 2.x is not finished

The most important line in the README is a warning at the top of the page: the master branch is version 2.x and is still in development, and anyone who wants 1.x should switch to the 1.x branch.

That single statement changes how you should read the repository. A default checkout is a work in progress, and the documentation split between v1 and v2 sites is a symptom of the same thing. Anyone evaluating this project needs to choose a branch before reading anything else, and an evaluator who only looks at master will form the wrong impression of both the API surface and the documentation state.

The release history makes the gap visible. Versions 1.4.1 on 2023-10-24, 1.4.2 on 2024-04-13 and 1.4.3 on 2026-07-30 show a project that ships infrequently, with a two-year gap before the most recent tag. That 1.4.3 tag was published on 2026-07-30, the same date as the last push, so the current line of work is the 2.x development and the 1.x line may or may not continue.

The cadence is the thing to weigh against your roadmap. A scaffold you adopt is a scaffold you own from that version forward, and a project with multi-month gaps between patch releases means you are reading changelogs rather than release notes.

Frontend coupling and licensing

Two structural points before you commit.

First, the module boundaries assume a particular stack. `mybatis-plus/` as a module means the data access layer is built on MyBatis-Plus, and the presence of `datascope/` and `security/` implies conventions about how queries and authentication are wired. If your project already has its own persistence and security layers, the modules you actually want are the smaller ones like `desensitize/`, `fieldcrypt/` and `xss/`, and the benefit shrinks accordingly. The value is highest when you adopt the whole starter.

Second, the front ends are separate projects. Three of them exist, covering React, Vue 3 and Vue 2, which means features will not land in all three at once. Choosing a starter is choosing which front end you will be tracking.

On licensing, the project is Apache 2.0 with `LICENSE.txt` at the root and a copyright line for the Ballcat authors. That is permissive and does not impose the reciprocal obligations you get with a copyleft admin template, which matters because you will be copying code out of these modules into a proprietary application.

The API signature directory is the other governance signal worth noting. For a library set, freezing public signatures is what stops an innocuous minor version from breaking your build months later, and the presence of that directory suggests the project treats it as a problem worth solving.

Editorial conclusion

Adopt Ballcat for an internal admin system on Spring Boot where menu and data permissions, operation logging and XSS filtering are all needed, and pin to a 1.x release since master is an in-development 2.x line. Do not adopt it if you need a single dependency to reason about, because each capability is its own artifact with its own upgrade path. Verify first which branch you are on, read CHANGELOG.md for the jump from 1.4.2 to 1.4.3 dated 2026-07-30, and note that the last push was also on 2026-07-30, so 2.x has no release you can depend on yet.

Frequently asked questions

How do I install Ballcat?

The README states all JAR packages have been published to the Maven central repository, so you add the modules you need as Maven dependencies. For SNAPSHOT builds it gives a repository block pointing at the Central Portal snapshots URL with releases disabled and snapshots enabled.

What is the difference between the master branch and the 1.x branch in Ballcat?

The README warns that master is the 2.x version and is still in development, and that 1.x users should switch to the 1.x branch. Documentation is split accordingly between v1.ballcat.cn and v2.ballcat.cn.

Which modules does Ballcat provide for permissions and logging?

The repository carries a security module, a datascope module for data permissions, and an operation-log module, alongside separate handling for access logs and exception logs in the feature description.

What front end options does the Ballcat scaffold offer?

Three companion front-end repositories are listed: ballcat-ui-react, ballcat-admin-ui-vue3 and ballcat-ui-vue for Vue 2. The ballcat-boot repository provides the server template.

What license is Ballcat released under?

Apache 2.0, with the LICENSE.txt file at the repository root and copyright held by the Ballcat authors.

Official sources

  1. ballcat-projects/ballcat on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ballcat-projects-ballcat.svg)](https://hysenlabs.com/projects/ballcat-projects-ballcat)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/ballcat-projects-ballcat.svg)](https://hysenlabs.com/projects/ballcat-projects-ballcat)

Was this useful?