explaingit

exrick/xmall

7,233JavaAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

A full Java e-commerce platform with a customer storefront and admin panel, built as a distributed system using Dubbo, ZooKeeper, Redis, and Elasticsearch as a learning reference for distributed backends.

Mindmap

mindmap
  root((XMall))
    What it does
      Java e-commerce platform
      Distributed SOA design
      Storefront and admin
    Services
      Dubbo RPC services
      ZooKeeper discovery
      ActiveMQ messaging
    Data Layer
      MySQL main store
      Redis caching
      Elasticsearch search
    Frontend
      Vue.js storefront
      jQuery admin panel
    Setup
      6 backend services
      Multiple middleware deps
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Study how a distributed Java e-commerce system is structured with separate services for orders, products, and users.

USE CASE 2

Use as a reference implementation when building a new online store with Spring and Dubbo.

USE CASE 3

Learn how to integrate Elasticsearch for product search in a Java web application.

USE CASE 4

Set up a complete admin panel and customer storefront as a graduation or portfolio project.

Tech stack

JavaSpringSpringMVCMyBatisDubboZooKeeperElasticsearchRedis

Getting it running

Difficulty · hard Time to first run · 1day+

Requires ZooKeeper, Redis, ActiveMQ, and Elasticsearch all running locally before starting six separate backend services.

Use and modify freely, but any distributed versions must also be open-sourced under GPL v3.

In plain English

XMall is a full-featured online shopping platform built in Java, intended as a reference implementation for a distributed e-commerce system. It was created as a graduation project and later open-sourced. The project comes with two interfaces: a customer-facing storefront where shoppers can register, browse products, and place orders, and a separate admin panel for managing products, categories, orders, users, permissions, and system configuration. A live demo of both is available at the project's website. The backend is split across multiple services following a service-oriented architecture (SOA) pattern, where different parts of the system run as independent services and communicate with each other. Dubbo handles communication between those services, with ZooKeeper coordinating service discovery. Product search is powered by Elasticsearch. Redis provides caching to reduce database load. ActiveMQ is a message queue used to handle tasks asynchronously between services. MySQL stores the main data, and Shiro handles authentication and access control. All of this is written on top of the Spring/SpringMVC/MyBatis stack that is common in Java enterprise development. The customer-facing storefront is a separate Vue.js project (xmall-front) that talks to the backend via API. The admin panel uses traditional server-rendered pages with jQuery-based plugins for tables, file uploads, and charts. The README is written primarily in Chinese, as this project targets Chinese developers learning distributed backend patterns. To run it locally, you need several middleware services installed and running (ZooKeeper, Redis, ActiveMQ, Elasticsearch), then configure connection details and start six separate backend services plus the frontend. The admin panel runs at port 8888 by default with default credentials. The project is GPL v3 licensed.

Copy-paste prompts

Prompt 1
Walk me through the XMall service architecture, how do the Dubbo services communicate and what does each one handle?
Prompt 2
How does XMall use Elasticsearch for product search, and how do I index a new product into it?
Prompt 3
Show me how ZooKeeper is used for service discovery in the XMall Dubbo setup.
Prompt 4
I want to add a new feature to XMall, what is the pattern for adding a new Dubbo provider and consumer service?
Prompt 5
How does XMall use ActiveMQ for async messaging between services, and what kinds of tasks does it offload?
Open on GitHub → Explain another repo

← exrick on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.