Library / SDK
guchengwuyue/yshop-drink avatar
guchengwuyue/yshop-drink

yshop-drink: a Chinese restaurant ordering and SaaS platform

yshop意象点餐(扫码点餐)系统,在线点餐(外卖与自取)小程序模式,支持多门店模式,支持saas多租户模式,基础技术Java17+sprringboot3+vue3+uniapp(vue3)(支持H5、微信小程序) 采用当前流行技术组合的前后端分离点餐系统: SpringBoot3、Spring Security OAuth2、MybatisPlus、SpringSecurity、jwt、redis、Vue3的前后端分离的系统

1,606 stars413 forksPLpgSQLMIT

At a glance

What is it?
yshop-drink is an open source scan-to-order system for restaurants, covering table QR ordering, delivery and pickup, multi-store management, coupons, membership cards, cashier terminals and a SaaS multi-tenant mode, built on Spring Boot 3, Vue 3 and UniApp. It suits a developer in China building or reselling a restaurant ordering system, and the frontend and mobile app live in sibling repositories.
Who is it for?
Adopt yshop-drink if you are building a restaurant ordering product for the Chinese market and want table QR ordering, delivery, cashier and marketing features already implemented, and you can run three separate codebases. Skip it if you want a small single-repo application or if you need a market outside China, since the payment, WeChat and mini-program integrations are built for that context.
Can I use it commercially?
Yes. MIT 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 8 days ago.
What is it written in?
Mainly PLpgSQL, according to GitHub's language statistics.

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

Editorial analysis

One repository, three codebases

The most important thing to understand about yshop-drink is what it does and does not contain. The project structure section lists three pieces. The Java backend is the repository you are reading, referred to there as the yshop-drink Java project. The admin backend is a separate Vue 3 project, yshop-drink-vue, and the mobile client is a separate UniApp Vue 3 project, yshop-drink-uniapp-vue3, supporting the WeChat mini program and H5. The top level of this repository confirms it, with `yshop-drink-boot3/` for the Java side alongside `yshop-drink-vue3/` and `yshop-drink-uniapp-vue3/` directories. So this is the API and business logic, and the two user-facing clients are separate projects you have to obtain and wire up. The primary language recorded for the repository is PLpgSQL, which is a naming artefact of the language detection rather than a description of the codebase, and the licence is MIT, which the README calls more permissive than Apache 2.0 and free for personal and commercial use, though MIT itself still requires keeping the copyright notice.

What the system actually covers

The core feature table is the best summary available. The ordering module covers delivery and pickup, advance reservation, and table QR ordering for both single and multi-person collaborative ordering. The goods module handles multi-specification SKUs and an image asset library. The store module covers multiple stores, store management and a merchant centre. The marketing module includes coupons, points redemption combining points with cash, top-up and membership cards. The cashier module provides a checkout terminal working with a scan gun or a scan box, plus cloud receipt printing. The operations module covers order management, WeChat public account integration, custom page decoration, and the SaaS multi-tenant mode. That last item is the one that changes the shape of the data model, since a multi-tenant system has to scope nearly every query by tenant, and it is the reason the system supports several distinct merchants from one deployment.

The stack, and why it is a familiar combination

The backend is Spring Boot 3 with Spring Security OAuth2 for authentication, MyBatis and MyBatis-Plus for persistence, Redis for caching, and Lombok and Hutool as utilities. JWT appears in the technology list in the project description, which is the token mechanism layered on top of the Spring Security configuration, and that combination, OAuth2 as the framework with JWT as the credential format, is what lets the same backend serve the admin web app and the mini program. The frontend is Vue 3 with Element Plus as the component library, and the mobile client is UniApp on Vue 3, so the same Vue 3 knowledge covers both clients and UniApp compiles to H5 and the WeChat mini program from one codebase. The acknowledgements section credits ruoyi-vue-pro, pay-java-parent, uvui, UniApp, Vue and Element Plus.

Getting the backend running

The environment requirements are a table of exact versions: JDK 17, MySQL 8, Redis 6 or newer, Node.js 16 or newer, and Maven 3.8 or newer. The backend is built with IDEA, the admin frontend with VS Code, and the UniApp client with HBuilderX. The backend sequence is: open the Java project in IDEA and let the dependencies install, create the database and import `sql/yixiang-drink.sql` from the project directory, then edit the yml in `yshop-server` to configure the database and Redis. After that you build from the project root:

bash
mvn clean install package -Dmaven.test.skip=true

The `-Dmaven.test.skip=true` flag is worth noting, because it means the build skips the test phase entirely, which is a speed choice for getting started rather than a sign that a test suite runs in CI. The database import is the step that carries the most risk, since the schema and the seed data arrive as a single SQL dump that you have to load before anything else will work, and the configuration in the yml has to match the credentials you created.

Running the admin frontend and the mini program

The admin frontend is a separate Vue 3 project opened in VS Code, where you install dependencies with pnpm and configure the API address before starting the dev server:

bash
pnpm install
bash
npm run dev

Note the mix, pnpm for the install and npm for the run script, which is a common pattern in Vue projects where the lockfile is pnpm but the scripts are npm-agnostic. The mobile client is a different workflow entirely, because UniApp projects are normally driven from HBuilderX rather than a command line. The steps are to import the UniApp project into HBuilderX, configure the API, configure the mini program settings, then run the WeChat mini program and run the H5 build, each with a screenshot in the README showing the corresponding HBuilderX screen. The WeChat mini program configuration is the part with a hard external dependency, since a mini program needs an app id registered with WeChat before it will run on a device.

Where the documentation lives, and what is not in the repo

The README is explicit that the written material sits outside the code. There is a QQ group, 544263002, and joining it requires starring the project first, and the group is where the video tutorials and the development documentation are said to be. There is a demo page linked from the README at the yixiang.co site, and the official site is at the same domain. So the shape of this project is a commercial-style open source product, where the code is public and the deeper documentation is community-gated. That matters for anyone evaluating it, because the repository itself is thin on architectural detail. There is no architecture document, no API reference and no data model description beyond the SQL dump. The features are documented in a table, the setup in numbered steps, and everything else is in the group. The project has no GitHub releases, so there is no version history to read and no changelog, and the last push was on 2026-10-15, which means the code is being worked on but the releases are not being cut as tagged artefacts.

The right way to think about this project

The most useful framing is that this is a starting point for a commercial product rather than a library or a framework. The feature set is broad and specific, with the cashier hardware integration, the cloud receipt printing and the marketing module covering the parts of a restaurant ordering system that a generic e-commerce template will not have. The SaaS multi-tenant mode is the part that makes it a product rather than a single-shop script, and it is also the part that will be hardest for an adopter to change if their needs differ, since tenant isolation touches every query. The MIT licence makes the commercial path open, and the credit to ruoyi-vue-pro explains the foundation. What you inherit is a working set of business flows and a schema, in exchange for accepting a specific data model, a specific auth setup, and a project whose documentation lives in a chat group rather than in version control. That trade is reasonable for a domain with this much screen work, and it is worth weighing before you start pulling the schema apart.

Editorial conclusion

Adopt yshop-drink if you are building a restaurant ordering product for the Chinese market and want table QR ordering, delivery, cashier and marketing features already implemented, and you can run three separate codebases. Skip it if you want a small single-repo application or if you need a market outside China, since the payment, WeChat and mini-program integrations are built for that context. Before you start, note that only the Java backend is in this repository, that the admin frontend and the UniApp mobile client are separate projects you must obtain separately, and that the schema comes from an import of `sql/yixiang-drink.sql` into a MySQL 8 database with Redis 6 or newer alongside it.

Frequently asked questions

What does the yshop-drink project include?

This repository holds the Java backend, yshop-drink-boot3. The admin backend is a separate Vue 3 project, yshop-drink-vue, and the mobile client is a separate UniApp Vue 3 project, yshop-drink-uniapp-vue3, supporting the WeChat mini program and H5.

What are the requirements to run the yshop-drink backend locally?

JDK 17, MySQL 8, Redis 6 or newer, Node.js 16 or newer and Maven 3.8 or newer. You create the database, import sql/yixiang-drink.sql, configure the database and Redis in the yml in yshop-server, and build with `mvn clean install package -Dmaven.test.skip=true`.

Does yshop-drink support multiple stores and multiple tenants?

Yes. The store module covers multiple stores, store management and a merchant centre, and the operations module lists SaaS multi-tenant mode alongside order management, WeChat public account integration and custom page decoration.

Which tools are used to develop the yshop-drink projects?

IDEA for the Java backend, VS Code for the admin Vue frontend with pnpm install and npm run dev, and HBuilderX for the UniApp mobile project, where you import the project, configure the API and the mini program settings, then run the WeChat mini program or the H5 build.

What licence is yshop-drink released under?

MIT, described in the README as more permissive than Apache 2.0, with free use for individuals and companies, though MIT still requires keeping the copyright notice.

Official sources

  1. guchengwuyue/yshop-drink on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
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/guchengwuyue-yshop-drink.svg)](https://hysenlabs.com/projects/guchengwuyue-yshop-drink)

Was this useful?