mall: A Java E-Commerce Reference System
mall is a Java e-commerce reference system pairing a customer storefront with an internal admin console, built on Spring Boot and MyBatis with Docker deployment. Reach for it to see a modular Spring Boot stack, product search, and order flow wired together in one codebase; skip it if you need a maintained, production-ready storefront, since the README frames mall as a demonstration, not a hosted service to sell from.
Understanding the mall E-commerce System
mall is an open-source e-commerce system built by macrozheng, combining a customer-facing storefront and a back-office admin system in one Java codebase. The storefront module covers the homepage, product search, cart, and order flow; the admin module handles products, orders, members, promotions, and reporting. Both run on Spring Boot and MyBatis, with Elasticsearch for search and Docker for deployment.
Core Modules and Functionality
- ✓Two Spring Boot services split by role: mall-portal serves the customer storefront (homepage, product search, cart, order flow, member center, customer service), and mall-admin serves the back-office (products, orders, members, promotions, operations, content, reports, finance, permissions, settings), per the README.
- ✓mall-search is a dedicated Elasticsearch-based module for product search, kept separate from the transactional mall-portal and mall-admin services.
- ✓Shared modules mall-common (utility code), mall-mbg (MyBatis Generator output), and mall-security (a Spring Security wrapper) factor out cross-cutting code instead of duplicating it per service.
- ✓The backend stack listed in the README spans MyBatis and MyBatis Generator for data access, RabbitMQ for messaging, Redis and MongoDB for storage, Druid for connection pooling, JWT for login, and SpringDoc for API docs.
- ✓Logging runs through Logstash and Kibana against Elasticsearch (ELK), with a dedicated setup guide linked from the README.
- ✓File storage supports both Alibaba Cloud OSS and MinIO, per the tech-selection table.
- ✓Two separate front-end repos pair with the backend: mall-admin-web (Vue and Element for the admin UI) and mall-app-web (Vue and uni-app, built for a mobile-viewport storefront demo).
- ✓A sibling repository, mall-swarm, documents a microservices version of the same system built on Spring Cloud Alibaba.
Setting Up the mall Project
Setup scope depends on what you're running. The README notes that starting only the mall-admin module needs just MySQL and Redis installed; running the full system pulls in the rest of the stack. Deployment itself is documented through separate linked guides rather than inline commands: one for Windows, one for Docker, one for Docker Compose, and one for Jenkins-based automated deployment on Linux. The dev-environment table in the README lists the versions the project was built against: JDK 17, MySQL 5.7, Redis 7.0, MongoDB 5.0, RabbitMQ 3.10.5, Nginx 1.22, and Elasticsearch, Logstash, and Kibana all at 7.17.3. The README also notes the master branch runs on Spring Boot 3.5 and JDK 17, while a separate dev-v2 branch targets Spring Boot 2.7 and JDK 8 for older environments. Treat the linked macrozheng.com guides as the source of truth for exact commands, since the README itself doesn't spell them out.
Strengths
- ✓Covers both halves of an e-commerce system, a customer storefront and an internal admin console, in one repository instead of just an API skeleton.
- ✓The module split (mall-common, mall-mbg, mall-security, mall-search) mirrors how a real Java team separates shared code, generated data access, and search from business logic.
- ✓Deployment is documented through four separate paths: Windows, Docker, Docker Compose, and Jenkins automation.
- ✓A parallel mall-swarm project gives you a microservices version of the same system to compare against, from the same author.
- ✓Apache-2.0 licensing keeps it usable in commercial derivative work without copyleft strings attached.
Potential Challenges and Considerations
- △Exact setup and run commands aren't in the README itself; it defers entirely to guides on the macrozheng.com docs site, so you depend on that external site staying current.
- △The README frames mall as a demonstration of mainstream Java e-commerce tooling, not a claim of production-hardened software, so treat it as a reference implementation to learn from or fork rather than a drop-in storefront.
- △Running the full system means standing up MySQL, Redis, MongoDB, RabbitMQ, Elasticsearch, Logstash, and Kibana together, a wide stack for a local environment even though the admin-only path only needs MySQL and Redis.
- △The master branch requires JDK 17 and Spring Boot 3.5, so teams on older JDK 8 environments have to use the separate dev-v2 branch instead; the two aren't interchangeable.
- △Primary documentation and the project's community channel, a WeChat public account, are Chinese-first per the README, which slows down English-only readers.
- △No automated test suite or CI badge appears in the README or repository facts, so test coverage isn't documented.
Exploring Related Projects
Common Questions About mall
mall runs on Spring Boot and MyBatis for the backend, Spring Security for auth, Elasticsearch for product search, RabbitMQ for messaging, and Redis and MongoDB for data, all deployed through Docker, per the README's technology-selection table.
mall's README links separate deployment guides for Windows, Docker, Docker Compose, and Jenkins-based automated deployment on Linux instead of listing commands inline, so those guides are the documented path.
mall has a microservices sibling called mall-swarm, built on Spring Cloud Alibaba, which the README links as the distributed-services version of the same system.
mall splits into mall-admin (back-office), mall-portal (storefront), and mall-search (Elasticsearch-based search), plus shared modules mall-common, mall-mbg, and mall-security, per the README's project structure.
mall is released under the Apache License 2.0, as listed on the repository.
mall's README links a full tutorial site and a separate video tutorial page, both hosted at macrozheng.com by the project's author.
The problem it solves
Java developers who want to see e-commerce concerns like product search, order flow, and member promotions actually wired into a working Spring Boot codebase usually end up piecing that together from separate tutorials on MyBatis, Elasticsearch, and RabbitMQ. mall's README frames the project around closing exactly that gap: one repository with both a storefront and an admin system, built on the same mainstream Java stack a real team would use. That's the gap mall fills.
Best use cases
- •Learning how a multi-module Spring Boot project is actually organized, by reading mall-admin, mall-portal, and mall-search as separate modules against mall-common and mall-mbg.
- •Standing up a local reference stack that touches MyBatis, Elasticsearch, RabbitMQ, Redis, and MongoDB together, instead of wiring each one up from scratch in a toy project.
- •Comparing a modular-monolith Java e-commerce codebase against a microservices rewrite, by cross-referencing mall with the same author's mall-swarm.
- •Prototyping an internal back-office admin tool, borrowing the mall-admin module's product, order, member, and promotion management structure as a starting point.
Who should try it — and who should skip
Try mall if you're a Java developer who wants a full, working example of a Spring Boot and MyBatis e-commerce codebase to read, run, or fork, especially one that wires a storefront, an admin console, Elasticsearch search, and RabbitMQ messaging together in one place. Skip it if you need a maintained, production-ready storefront out of the box, or if working through Chinese-first documentation and a WeChat-based community channel is a dealbreaker for your team.
Related repositories
Still deciding about mall?
One click hands the question to an AI along with this page — see what it says about mall.
