# crmeb_java: a SpringBoot and uni-app mall system you can self-host

> CRMEB's Java edition is an Apache-2.0 e-commerce stack with a SpringBoot backend, a Vue admin console and a uni-app client. It suits teams that want a working mall to extend rather than a framework to build from scratch.

**crmeb/crmeb_java** — Java商城 免费 开源 CRMEB商城JAVA版，SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue+elementUI 包含移动端、小程序、PC后台、Api接口；有产品、用户、购物车、订单、积分、优惠券、营销、余额、权限、角色、系统设置、组合数据、可拖拉拽的form表单等模块，大量的减少了二开的成本。

- Repository: https://github.com/crmeb/crmeb_java
- Website: https://www.crmeb.com/theme?from=giteejava
- Stars: 3,059 · Forks: 809
- Language: Vue
- License: Apache-2.0
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/crmeb-crmeb-java

## What crmeb_java actually replaces

Building a storefront in China means assembling the same parts every time: WeChat Mini Program and H5 clients, an admin console, SKU and attribute handling, coupons, points, balance, distribution, and button-level permissions. crmeb_java ships those parts already wired together. The README describes it as an "open source e-commerce solution released under the Apache-2.0 license", with management covering "product management (supports SKU, attributes, categories, reviews), order management, user management, shopping cart, logistics management, financial statistics, multiple payment methods".

The intended user is a development shop or an in-house team that has a specific business to run and does not want to spend the first three months on order state machines. The README is explicit that the code is "fully open source without encryption, can be used for free in commercial purposes". That matters more than it sounds. Several mall products in this category ship an encrypted core and sell the source separately, so "no encryption" is a real differentiator rather than marketing.

It is a poor fit for a team that wants a headless commerce API with no opinions about presentation. This project has opinions everywhere: Element UI in the admin, uni-app on the client, a fixed module list. You inherit them.

## How the SpringBoot backend and uni-app client fit together

The repository splits into two top-level directories, backend/ and frontend/, plus .crmeb/, LICENSE and the two README files. The README describes "a clear architecture design of separated front-end and back-end", and the stack table confirms it: SpringBoot 2.2.6.RELEASE with MyBatis Plus 3.3.1 for persistence, MySQL 8.0, Redis for cache, Maven 3.6.1 as the build tool, and swagger-bootstrap-ui 1.0 for API documentation.

On the client side the split is Vue 2.x with Element UI 2.13 for the PC management console, and uni-app for "H5 + official account + WeChat Mini Program". That is the architectural bet: one uni-app codebase compiles to the WeChat Mini Program, the H5 page and the official account entry, so order and cart logic is written once. The README frames the benefit as "unified data and synchronized business operations".

Two mechanisms are worth calling out because they shape how you extend the system. First, Spring Security provides "role-based access control, which can be precise to the button level", so permission checks are not just route guards; they reach into individual UI controls. Second, the README states the system has a "built-in Redis queue, effectively peak shaving and decoupling". A queue in the same Redis instance as the cache is a design trade-off: simple to operate, but a Redis outage takes down both caching and asynchronous processing at once.

## Installing crmeb_java and getting a first admin session

The README does not contain a step-by-step install procedure. It points to the help documentation for the Java 3.0 line and to an online demo, and it names the build tool and runtime dependencies in the stack table: Maven 3.6.1, MySQL 8.0, Redis, SpringBoot 2.2.6.RELEASE. Treat the help documentation as the source of truth for setup. The README gives no clone command, no build command, no port and no configuration key, so no code block can be reproduced here without inventing one.

What you can do from the repository itself is inspect the layout before you commit to anything. The top-level entries are .crmeb/, .gitignore, LICENSE, README.md, README_ZH.md, backend/ and frontend/, and the default branch is 3.1. Open backend/ and read the Maven project files to confirm the SpringBoot and MyBatis Plus versions match the table. Open frontend/ to see how the Vue admin console and the uni-app client are separated. That reading exercise tells you more about whether you can maintain this than any quick start would.

Once you have followed the help documentation to a running instance, the first real task is to log into the PC management console, create a product with SKU and attributes, and confirm it appears through the uni-app H5 client. That single loop exercises MyBatis Plus persistence, the Redis cache and the client-side API contract in one pass, and it is the fastest way to find out whether your environment matches what the README describes. Because the README documents swagger-bootstrap-ui 1.0 as the API documentation layer, the running backend is also where you inspect and exercise the REST endpoints.

## Where crmeb_java will cost you time

The README is a feature list, not an operations manual. It documents no upgrade procedure between branches, no migration tooling and no rollback path. If you deploy this and later need to move to a newer release, the README gives you nothing to follow. That is the single largest risk in adopting it, and it is not a small one for a system holding orders and payment records.

There are no retrieved releases for this repository, so there is no changelog to diff against either. You are tracking a branch, not versioned artifacts, which makes "what changed since my last pull" a manual git exercise rather than a release note.

The README also does not document the environment variables, database schema or configuration keys needed to bring the stack up. It names MySQL 8.0 and Redis as requirements and stops there. Expect the setup knowledge to live in the help documentation and in the source.

Two more limits are structural. The admin console is Vue 2.x with Element UI 2.13, both of which are older generations of their libraries; the README does not discuss a migration path. And the client layer is built around WeChat and Chinese payment conventions. If your customers are outside that ecosystem, the uni-app advantage evaporates and you are carrying a large amount of code you will not use.

Finally, the marketing functions are numerous: the README lists "group buying, price cutting, flash sales, coupons, check-in, points, membership levels, balance recharge, distribution and viral marketing, event borders, atmosphere images". Every one of those is a surface you must configure, test and secure. An unused flash-sale module is still attack surface.

## How crmeb_java differs from Mall4j, ShopXO and Tigshop

The related searches around this project are full of other mall systems, which tells you the real decision is not "should I use a mall system" but "which one". The honest comparison comes down to language and client strategy.

Mall4j is the closest Java peer: a SpringBoot mall backend with its own admin and client layers. The practical difference is scope and packaging. crmeb_java bundles a much wider marketing module set and a uni-app client aimed at WeChat Mini Program, official account and H5 from one codebase; the README leans heavily on that multi-terminal story. If you only need a REST commerce backend and intend to write your own storefront, that bundled client is weight rather than value.

ShopXO and Tigshop sit on the PHP side of the same market. Choosing between them and crmeb_java is mostly a staffing question: your team's language decides it. The README does not claim any performance advantage over PHP implementations, and there is no benchmark in the repository to support one.

Within CRMEB itself there is a PHP edition, and the README's own links point at a shared theme and plugin marketplace. That is worth knowing because it tells you where the project's commercial energy goes: themes and plugins, not the Java core. If you need a vendor-supported module, check whether it exists for the Java line before you commit, since the marketplace is shared across editions.

## Licence, maintenance and what upgrading costs

The repository carries Apache-2.0, confirmed by the LICENSE file at the top level and by the README's licence badge. Apache-2.0 permits commercial use and modification, and it includes an explicit patent grant. It also requires you to preserve copyright and licence notices in redistributed code. That is the whole of what can be said here; whether your specific distribution triggers additional obligations is a question for a lawyer, not for this article.

The README's commercial claim, that the code is "fully open source without encryption, can be used for free in commercial purposes", is consistent with Apache-2.0. Note the distinction between the licence and the surrounding business: the Theme Market and Plugin Marketplace are separate commercial surfaces. Downloading a theme is not the same act as using the code.

Maintenance: the repository is not archived, and the last push was on 2026-09-11. That is recent activity on the default branch. It is not, however, the same thing as a maintained release process, because there are no retrieved releases and the README documents no upgrade path. Activity on a branch and a supportable upgrade story are two different properties, and only the first is in evidence.

Budget for upgrade cost accordingly. Without release notes, moving a production instance forward means reading diffs on a branch that also carries unrelated commits. For a small team that is a recurring tax; for a team that pins a commit and never moves, it is a one-time decision you should make deliberately rather than by default.

## Conclusion

Adopt crmeb_java if you need a multi-terminal Chinese-language mall with product, order, coupon and role modules already wired, and you have Java and Vue developers who will read the source. Do not adopt it if you need English-language admin UI, published release notes, or a documented upgrade path; the README documents neither. Before committing, verify three things on your own copy: that the backend builds against MySQL 8.0 and Redis with the Maven 3.6.1 toolchain the README lists, that the frontend and backend directories in the 3.1 branch match the module list in the documentation, and that the Apache-2.0 LICENSE file at the repository root is the licence you are prepared to ship under. Those three checks take an afternoon and decide everything else.

## FAQ

### Is crmeb_java free to use commercially?

Yes, according to the README, which states the code is fully open source without encryption and can be used for free in commercial purposes under Apache-2.0. The repository root contains a LICENSE file and the README carries an Apache-2.0 badge. The separate Theme Market and Plugin Marketplace are commercial surfaces outside that licence.

### What technology stack does crmeb_java use?

The README lists SpringBoot 2.2.6.RELEASE, MyBatis Plus 3.3.1, MySQL 8.0, Redis, Maven 3.6.1 and swagger-bootstrap-ui 1.0 on the backend, with Vue 2.x and Element UI 2.13 for the PC management console and uni-app for H5, official account and WeChat Mini Program clients.

### Does crmeb_java support WeChat Mini Programs?

Yes. The README describes the mobile end as uni-app covering H5, official account and WeChat Mini Program, with cross-platform compilation giving unified data and synchronized business operations across those terminals.

## Sources

- [crmeb/crmeb_java on GitHub](https://github.com/crmeb/crmeb_java)
- [Issues](https://github.com/crmeb/crmeb_java/issues)
- [License: Apache-2.0](https://github.com/crmeb/crmeb_java/blob/3.1/LICENSE)
- [Project website](https://www.crmeb.com/theme?from=giteejava)
- [README](https://github.com/crmeb/crmeb_java/blob/3.1/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/crmeb-crmeb-java
