Open-source project
elunez/eladmin avatar
elunez/eladmin

eladmin: a Chinese Spring Boot admin system with a code generator

eladmin JPA edition: a frontend/backend-separated admin management system built on Spring Boot 2.7.18, JPA, Spring Security, Redis, and Vue, developed in a modular way. Uses RBAC access control, supports data dictionaries and data-level permissions, one-click frontend/backend code generation, and dynamic routing.

21,902 stars7,327 forksJavaApache-2.0

At a glance

What is it?
A JPA flavoured admin backend on Spring Boot 2.7 with RBAC, data permissions, dictionaries and a generator that writes both the Java and the Vue side of a CRUD screen.
Who is it for?
eladmin is the accumulated answer to a question a lot of teams hit: what do we actually put in an admin backend, and who writes the same CRUD screen forty times. The answer here is Spring Boot 2.7 with JPA, Spring Security for JWT authentication, Redis for online user state, and a generator module that emits both backend entities and frontend Vue pages.
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 167 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 October 22, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • elunez/eladmin21,902 ★ · -4
Star history
Repository2026-10-092026-10-22
elunez/eladmin21.9k21.9k

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

Editorial analysis

Five Maven modules instead of one application

The repository is a multi-module Maven build, and the tree shows the split plainly: `eladmin-common/`, `eladmin-system/`, `eladmin-logging/`, `eladmin-tools/`, `eladmin-generator/` and a `sql/` directory, with `pom.xml` at the root. The README explains what each one is for, and the division is the sort of thing that gets you thinking about whether the boundaries will suit you.

`eladmin-system` is both the core and the entry point, so it is the module you deploy. `eladmin-common` holds shared utilities, configuration, custom annotations, the aspect that processes those annotations, exception handling and the base entity and DTO classes with MapStruct mappers. `eladmin-logging` is opt in: a module that wants to record operation logs depends on it. `eladmin-tools` is the third party bucket, covering email, S3 compatible object storage, local storage and Alipay payment.

That last one is where the project stops being a template and starts being opinionated. Bundling a payment integration into an admin skeleton is a decision you would make if you were building internal tools for a company that sells things, and it is also a decision you might delete on day one.

Inside eladmin-common, where the cross cutting code lives

The README's directory breakdown of the common module is the most useful thing in the whole file for deciding whether to adopt the project, because it shows the actual shape of the code rather than a marketing summary:

text
- eladmin-common 公共模块
    - annotation 为系统自定义注解
    - aspect 自定义注解的切面
    - base 提供了Entity、DTO基类和mapstruct的通用mapper
    - config 项目通用配置
        - Web配置跨域与静态资源映射、Swagger配置,文件上传临时路径配置
        - Redis配置,Redission配置, 异步线程池配置
        - 权限拦截配置、AuthorityConfig、Druid 删除广告配置
    - exception 项目统一异常的处理
    - utils 系统通用工具类,列举一些常用的工具类

Two entries in that list are worth pausing on. The `base` package providing entity and DTO base classes alongside MapStruct mappers is the pattern that keeps a generated module small: the generator emits the fields and the mapper wires them up. And the configuration section covering Redis, the Redisson client, the async thread pool, CORS and static resource mapping, Swagger, upload temp paths and Druid is the checklist that a hand rolled admin project usually gets half done.

The utilities are named individually in the README: `BigDecimaUtils` for money arithmetic, `RequestHolder`, `SecurityUtils`, `StringUtils`, `SpringBeanHolder`, `RedisUtils`, `EncryptUtils` and `FileUtil`. `BigDecimaUtils` existing at all is a small signal about the audience, since money in floating point is a bug people learn once.

Permissions reach the row level, not just the menu

The permission story is broader than RBAC on menus, which is the thing that separates this from a template that stops at role to menu mapping. The feature list names interface level functional permissions and data permissions, custom permission annotations, and an annotation for anonymous interfaces so an endpoint can be explicitly opened up. Alongside that there is interface rate limiting to keep a malicious client from pressuring the service layer.

The system functions section fills in the operational half: user management where new users default to the password 123456, role management with data permissions settable per department, menu management with backend configurable dynamic routes and multi level menus, department management shown as a tree table, and post or position management per department.

Dictionaries are there too, described as a way to manage fixed values such as status and gender without hard coding them. That is a small feature that pays for itself quickly, because status strings scattered through a codebase are a recurring source of bugs, and a dictionary table turns them into foreign keys.

What is not spelled out is the enforcement mechanism. The README says permissions are configurable and that custom annotations exist for intercepting interfaces, but it does not explain the query rewriting that row level data permission requires. If that is the feature you care most about, that is the part to verify in the source before committing.

The code generator writes both sides of the stack

The module list ends with `eladmin-generator`, described as generating front and back end CRUD code, and the feature list repeats the claim in Chinese as high flexibility generation of front and back end code to cut repetitive work. For a Vue plus Spring project this is the highest value module in the repository, because the CRUD screen is exactly the part that is tedious and exactly the part nobody wants to review by hand.

The whole project is a front end and back end separation, so the generator writing both sides is the point. The backend and frontend live in separate repositories, `elunez/eladmin` and `elunez/eladmin-web`, with mirrors on Gitee for both. The frontend descends from the `vue-element-admin` template, and the README credits `PanJiaChen` for it, along with a generic CRUD component set from `Moxun` and back end operations management features from `zhy6599`.

Those credits are worth reading as a dependency list. This is not a from scratch system, it is a careful assembly of well known open source pieces, and knowing which parts you inherit matters when something breaks at 2am.

Operations modules that most templates leave out

The system functions list includes Quartz scheduled tasks with execution logs, Druid monitoring of database access with its own default credentials, system logs recording both operations and exceptions, online user management with the ability to restrict a single user to one login, and server performance monitoring. There is also deployment management for remote servers and an email tool that sends HTML through a rich text editor.

Cloud storage support is described as compatible with the Amazon S3 protocol, which in practice means the object storage choices that matter, including Qiniu and Alibaba Cloud. That is implemented as an adapter rather than a vendor binding, which is the right call and is why the `eladmin-tools` module can hold it without becoming a dependency problem.

The vulnerability surface here is obvious and worth naming before you deploy it. Default credentials ship in the README for the demo, for newly created users and for the Druid console. Rate limiting exists, which helps. But an admin skeleton with default passwords, a monitoring console and remote deployment features should be treated as a starting point to harden rather than something to expose.

The version story is also honest: the README names Spring Boot 2.7.18 and the JPA data access approach, and a separate mybatis-plus variant exists as its own project, `eladmin-mp`, for teams who want that instead.

Adopting it, or mining it for the pieces you need

With 21911 stars and 7332 forks, eladmin is one of the most widely copied admin systems in the Chinese Java ecosystem, and the fork count is arguably the more informative number. Most forks are not competing products, they are teams taking the skeleton and reshaping it for an internal tool.

That is the honest way to evaluate it. The alternative skeletons people search for, RuoYi, RuoYi Pro, macrozheng mall and liteMall, all occupy the same space with different data access choices, and the related searches for this project surface exactly those names. The choice between them usually comes down to JPA versus MyBatis, licence and which community is answering questions in your language.

Documentation lives on a separate site at eladmin.vip with a live demo, and the README gives credentials for it. The licence is Apache 2.0, which is the most permissive mainstream choice available and one of the reasons this skeleton gets embedded in commercial internal tools without a legal review. The last push was on 2026-05-09 and the latest tagged release is v2.7 from 2023-07-05, whose notes describe login and online user performance work, a new `FIND_IN_SET` query style for the `@Query` annotation, Gzip compression, and file upload validation that filters illegal characters from filenames.

Editorial conclusion

eladmin is the accumulated answer to a question a lot of teams hit: what do we actually put in an admin backend, and who writes the same CRUD screen forty times. The answer here is Spring Boot 2.7 with JPA, Spring Security for JWT authentication, Redis for online user state, and a generator module that emits both backend entities and frontend Vue pages. The RBAC model reaches past menu permissions into row level data permissions, which is where most admin templates stop, and it ships the operational modules people always forget, including Quartz scheduling, Druid SQL monitoring, logging and deployment helpers. It is Apache 2.0 licensed with over 21000 stars and a mybatis-plus sibling project for teams who prefer that data layer. Start from the demo account described in the README, then read the module list before deciding whether to adopt it or mine it for parts.

Frequently asked questions

What is eladmin built with?

The README describes it as a front end and back end separated admin system on Spring Boot 2.7.18 with Spring Boot JPA, JWT, Spring Security, Redis and Vue. The frontend lives in a separate repository and is based on the vue-element-admin template, and a mybatis-plus variant exists as its own project for teams that prefer that data layer.

What modules does the eladmin project contain?

Five Maven modules: eladmin-common for shared utilities, configuration and annotations, eladmin-system as the core and the deployment entry point, eladmin-logging for operation logs, eladmin-tools for email, S3 storage and Alipay payment, and eladmin-generator for producing front and back end CRUD code.

Can eladmin restrict data access per user or department?

Yes, the feature list names interface level functional permissions and data permissions that can be customised, alongside custom permission annotations for intercepting endpoints and an annotation for anonymous access. Roles can have data permissions configured per department. The README does not explain the query rewriting mechanism, so check the source for that detail.

What licence is eladmin released under?

Apache License 2.0. That permissive choice is part of why the skeleton gets embedded in commercial internal tools. Default credentials do ship for the demo account, newly created users and the Druid console, so treat deployment as hardening work rather than configuration.

Official sources

  1. elunez/eladmin 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/elunez-eladmin.svg)](https://hysenlabs.com/projects/elunez-eladmin)

Star history chart for your README

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

Was this useful?