RepoPilotOpen in app →

YunaiV/ruoyi-vue-pro

🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、Flowable 工作流、三方登录、支付、短信、商城、CRM、ERP、MES、IM、AI 大模型、IoT 物联网等功能。你的 ⭐️ Star ⭐️,是作者生发的动力!

Healthy

Healthy across all four use cases

weakest axis
Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 3d ago
  • 4 active contributors
  • MIT licensed
Show all 7 evidence items →
  • CI configured
  • Tests present
  • Small team — 4 contributors active in recent commits
  • Single-maintainer risk — top contributor 96% of recent commits

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/yunaiv/ruoyi-vue-pro)](https://repopilot.app/r/yunaiv/ruoyi-vue-pro)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/yunaiv/ruoyi-vue-pro on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: YunaiV/ruoyi-vue-pro

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/YunaiV/ruoyi-vue-pro shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across all four use cases

  • Last commit 3d ago
  • 4 active contributors
  • MIT licensed
  • CI configured
  • Tests present
  • ⚠ Small team — 4 contributors active in recent commits
  • ⚠ Single-maintainer risk — top contributor 96% of recent commits

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live YunaiV/ruoyi-vue-pro repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/YunaiV/ruoyi-vue-pro.

What it runs against: a local clone of YunaiV/ruoyi-vue-pro — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in YunaiV/ruoyi-vue-pro | Confirms the artifact applies here, not a fork | | 2 | License is still MIT | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 33 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>YunaiV/ruoyi-vue-pro</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of YunaiV/ruoyi-vue-pro. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/YunaiV/ruoyi-vue-pro.git
#   cd ruoyi-vue-pro
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of YunaiV/ruoyi-vue-pro and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "YunaiV/ruoyi-vue-pro(\\.git)?\\b" \\
  && ok "origin remote is YunaiV/ruoyi-vue-pro" \\
  || miss "origin remote is not YunaiV/ruoyi-vue-pro (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
  && ok "license is MIT" \\
  || miss "license drift — was MIT at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "pom.xml" \\
  && ok "pom.xml" \\
  || miss "missing critical file: pom.xml"
test -f "yudao-server" \\
  && ok "yudao-server" \\
  || miss "missing critical file: yudao-server"
test -f "yudao-framework" \\
  && ok "yudao-framework" \\
  || miss "missing critical file: yudao-framework"
test -f "yudao-module-system" \\
  && ok "yudao-module-system" \\
  || miss "missing critical file: yudao-module-system"
test -f "yudao-module-infra" \\
  && ok "yudao-module-infra" \\
  || miss "missing critical file: yudao-module-infra"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 33 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~3d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/YunaiV/ruoyi-vue-pro"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

RuoYi-Vue-Pro is a full-stack enterprise admin system scaffolding built on Spring Boot 2.7 + MyBatis Plus + Vue 3, providing production-ready implementations of RBAC dynamic permissions, SaaS multi-tenancy, Flowable workflow engines, and integrated third-party services (WeChat, Alipay, SMS). It solves the repetitive 80% of admin dashboard development by offering a monolithic Java backend with a Vue 3 + Element Plus frontend, database-agnostic ORM, and code generation for CRUD operations. Maven monorepo with a parent pom (yudao/pom.xml) declaring version properties (revision=2026.03-jdk8-SNAPSHOT) and modular subprojects: yudao-dependencies (BOM), yudao-framework (shared libraries), yudao-server (main app), and pluggable feature modules (yudao-module-system, yudao-module-infra, with disabled-by-default modules for bpm, crm, erp, iot, ai under XML comments). Frontend split into three parallel Vue versions (element-plus, vben/ant-design-vue, element-ui) plus uni-app mobile.

👥Who it's for

Chinese enterprise developers and startup teams building internal admin portals, CRM/ERP systems, or SaaS platforms who need a batteries-included, open-source alternative to commercial low-code platforms. Contributors are typically Java backend engineers and Vue frontend developers working in enterprise software houses.

🌱Maturity & risk

Highly mature and production-ready: the repo has substantial stars (100k+), active development with recent commits, comprehensive CI/CD via GitHub Actions (maven.yml, yudao-ui-admin.yml), and structured issue templates. The project is 4+ years old with enterprise-grade documentation (doc.iocoder.cn) and multiple deployment variants (master for JDK8/Spring Boot 2.7, master-jdk17 for JDK17/Spring Boot 3.2).

Single maintainer (YunaiV/艿艿) creates long-term maintenance risk despite open-source status; no obvious multi-maintainer governance. Heavy dependency ecosystem (Spring Boot, MyBatis Plus, Flowable, Redisson, WeChat SDK) increases supply-chain complexity. The monolithic architecture may introduce coupling issues at scale, though modular design (yudao-module-* structure) attempts to mitigate this. Large codebase (14.8MB Java) requires significant setup and context overhead for new contributors.

Active areas of work

Active development on Spring Boot 3.2 + JDK 17/21 support (master-jdk17 branch), AI/LLM module integration (yudao-module-ai, marked TODO in pom), and multi-frontend maintenance. GitHub Actions workflows indicate ongoing CI for both backend (Maven builds) and frontend (yudao-ui-admin). Version tracking via git properties (revision property) suggests frequent release cycles.

🚀Get running

git clone https://github.com/YunaiV/ruoyi-vue-pro.git
cd ruoyi-vue-pro
# Backend: requires JDK 8+, MySQL 5.7+, Redis 5.0+
mvn clean install
# Run yudao-server module (check yudao-server/pom.xml for spring-boot-maven-plugin config)
mvn -pl yudao-server spring-boot:run
# Frontend (choose one): cd yudao-ui-admin / yudao-ui-vben / yudao-ui-vue2
npm install && npm run dev

See https://doc.iocoder.cn/quick-start/ for detailed setup.

Daily commands: Backend dev mode: mvn -pl yudao-server spring-boot:run (runs on localhost:8080 by default; check yudao-server/src/main/resources/application.yml). Frontend dev mode: cd yudao-ui-admin && npm run dev (Vite dev server on localhost:5173). Docker deployment: See .github/workflows/maven.yml for Maven build steps; Dockerfile exists in root (check .dockerignore for build context).

🗺️Map of the codebase

  • pom.xml — Root Maven POM defining all dependencies, modules, and build configuration; essential for understanding the multi-module Spring Boot + Vue architecture
  • yudao-server — Main server module entry point containing application startup and core framework initialization
  • yudao-framework — Core framework module providing base classes, utilities, and cross-cutting concerns (logging, security, validation) used across all modules
  • yudao-module-system — System module handling RBAC, user management, permissions, and multi-tenant core functionality
  • yudao-module-infra — Infrastructure module for file management, SMS, payment, third-party integrations, and data access layer abstraction
  • .github/workflows — CI/CD pipeline definitions for automated Maven builds and UI deployment; critical for understanding deployment process
  • script/docker/docker-compose.yml — Docker containerization configuration for development and production deployments with MySQL, Redis, and other services

🛠️How to make changes

Add a New REST API Endpoint

  1. Create controller class in yudao-module-{domain}/src/main/java/cn/iocoder/yudao/module/{domain}/controller/api extending BaseController (yudao-module-system)
  2. Annotate with @RestController, @RequestMapping, and use @GetMapping/@PostMapping for HTTP methods with path (yudao-module-system)
  3. Inject service layer via @Autowired or constructor injection, call business logic methods (yudao-module-system)
  4. Return CommonResult<T> wrapper from framework for standardized JSON response and error handling (yudao-framework)

Add a New Business Service

  1. Create interface in yudao-module-{domain}/src/main/java/cn/iocoder/yudao/module/{domain}/service extending BaseService with CRUD methods (yudao-module-system)
  2. Implement interface with @Service, inject mapper (MyBatis Plus generated) for data access (yudao-module-system)
  3. Add custom business logic methods, use @Transactional for multi-step operations, call domain validators from framework (yudao-framework)
  4. Register in controller or other services via dependency injection; unit test in yudao-module-{domain}/src/test/java (yudao-module-system)

Add a New Database Entity & MyBatis Mapper

  1. Create entity class in yudao-module-{domain}/src/main/java/cn/iocoder/yudao/module/{domain}/dal/dataobject annotated with @Table(name=...) (yudao-module-system)
  2. Create mapper interface extending BaseMapper<Entity> in yudao-module-{domain}/src/main/java/.../dal/mapper; MyBatis Plus auto-generates CRUD (yudao-module-system)
  3. Add SQL script in yudao-module-{domain}/src/main/resources/db/migration/V{version}__*.sql for schema versioning (Flyway) (yudao-module-infra)
  4. Instantiate mapper in service, inject via @Autowired, use save()/update()/delete()/selectById() CRUD methods (yudao-module-system)

Extend RBAC with Custom Data Permissions

  1. Define permission rules in yudao-module-system/src/main/java/.../permission/core/dataobject with scope (USER/DEPT/CUSTOM) (yudao-module-system)
  2. Implement DataPermissionRuleInterceptor in framework to intercept SQL queries and apply WHERE clauses at runtime (yudao-framework)
  3. Register interceptor in MyBatis Plus configuration; annotate mapper methods with @DataPermission to activate filtering (yudao-framework)
  4. Test with users of different roles/departments to verify data isolation and rule evaluation (yudao-module-system)

🔧Why these technologies

  • Spring Boot 2.7 + Spring Cloud — Provides opinionated, production-ready microservices framework with built-in management endpoints, health checks, metrics, and easy deployment
  • MyBatis Plus — Lightweight ORM with code generation, fluent query API, multi-tenancy plugins, and minimal boilerplate compared to full JPA
  • Vue 3 + Element Plus / Ant Design Vue — Modern, reactive frontend framework with rich component libraries; three variants support different design preferences and legacy Vue 2 migration paths
  • Flowable BPM Engine — Embedded workflow engine for complex business process automation (approval workflows, task assignment) without external service dependency
  • Redis — In-memory caching layer for session management, token blacklists, frequently accessed configs; reduces DB load and latency
  • Flyway Database Versioning — Schema migration tool enabling reproducible, version-controlled database upgrades across dev/staging/prod environments
  • Docker + Docker Compose — Containerization for local development and production deployment; ensures consistency between environments and simplifies dependency management

⚖️Trade-offs already made

  • Multi-module monolithic architecture with pluggable domain modules (system, infra, mall, crm, erp, etc.)

    • Why: Balances code organization and reusability while avoiding microservices complexity; allows selective module deployment
    • Consequence: Shared database and classpath; requires careful module boundaries and API contracts; harder to scale individual modules independently than true microservices
  • Centralized data permission filtering at SQL query level via MyBatis interceptor

    • Why: Ensures consistent, audit-friendly permission enforcement across all data access; avoids scattered authorization logic
    • Consequence: Adds query overhead for every database access; complex WHERE clause generation for multi-level scoping; potential performance impact on large result sets
  • CommonResult<T> wrapper for all API responses

    • Why: Standardizes success/error response format, simplifies client error handling, enables consistent logging and monitoring
    • Consequence: Every endpoint wrapped in extra JSON envelope; slightly larger payload sizes; less RESTful (HTTP status codes underutilized)
  • Three separate Vue frontends (Vue3+ElementPlus, Vue3+Vben, Vue2+ElementUI) from same API

    • Why: Offers design choice flexibility and supports organizations in different tech debt stages; demonstrates API decoupling
    • Consequence: Three codebases to maintain; duplicate UI logic; inconsistent user experience across variants; higher testing burden
  • SaaS multi-tenancy at application level (not database isolation)

    • Why: Simpler deployment, shared infrastructure costs, easier data migration between tenants
    • Consequence: Tenant data isolation relies entirely on code-level filters; higher risk of data leakage if permission logic has bugs; harder to scale individual tenants independently

🚫Non-goals (don't propose these)

  • Does not provide real-time data synchronization across distributed clusters (suitable for single-region deployments or eventual consistency patterns)

🪤Traps & gotchas

Database initialization required: Must run Flyway migrations (yudao-server/src/main/resources/db/migration/) on fresh MySQL instance before startup; app will fail with DDL errors otherwise. Redis mandatory: Some Spring Boot auto-config classes assume Redis is running; disabling requires editing yudao-framework configs. Module interdependencies: Disabled modules in pom.xml (member, bpm, pay, crm, erp, ai) are commented out but referenced in docs; enabling them requires resolving their dependencies manually. Multi-tenant config: SaaS mode requires explicit yudao.tenant.enable=true in application.yml; default is single-tenant. Frontend build output: Node.js 14+ and npm/pnpm required; yarn may have lock-file conflicts with pnpm-lock.yaml if present. Code generation: The admin UI's code-gen feature reads from actual MySQL schema; if schema is missing tables, generation fails silently.

🏗️Architecture

💡Concepts to learn

  • RBAC (Role-Based Access Control) — RuoYi-Vue-Pro's permission system hinges on RBAC; understanding role→permission→resource mapping is essential for adding new features and securing endpoints
  • MyBatis Plus Dynamic SQL & Code Generation — MyBatis Plus generates boilerplate Mapper/Service/VO classes automatically; knowing how it generates queries and how to customize mapper.xml overrides is critical for ORM customization
  • SaaS Multi-Tenancy via Row-Level Security — RuoYi-Vue-Pro isolates tenant data via database interceptors and WHERE clauses, not schema isolation; understanding TenantInterceptor and DataPermissionInterceptor is required for extending to multi-tenant features
  • Flowable BPMN 2.0 Workflow Engine — Optional but powerful module for process automation (OA, approvals); contributors extending workflow features must understand BPMN XML format and Flowable's task assignment/delegation patterns
  • JWT Token-Based Authentication & Spring Security — RuoYi-Vue-Pro uses JWT + Redis token storage instead of sessions; understanding token refresh cycles and Spring Security filter chain is essential for auth-related modifications
  • MyBatis Plus Code Generator (Freemarker Templates) — The code-gen UI feature auto-generates Java/Vue/SQL from database tables using Freemarker; customizing generated code structure requires editing templates in yudao-module-infra
  • Spring Boot Multi-Module Maven Architecture with BOM — RuoYi-Vue-Pro uses a Bill of Materials (yudao-dependencies) and parent pom.xml to manage versions across 10+ modules; understanding Maven reactor builds and dependency inheritance patterns is required for dependency upgrades
  • apache/incubator-dolphinscheduler — Complementary workflow/scheduling engine; often integrated with RuoYi-Vue-Pro for job automation beyond Flowable's scope
  • zhangdaiscott/jeecg-boot — Direct competitor in Chinese enterprise Java admin scaffolding space; uses JimuReport and Flowable similarly but different modular structure
  • lenve/vhr — Predecessor era Chinese Java admin system (2018-era); demonstrates evolution of Spring Boot + Vue stack that influenced RuoYi-Vue-Pro
  • PanJiaChen/vue-element-admin — Referenced frontend template for early RuoYi-Vue iterations; provides foundational Vue + Element UI admin UI patterns
  • alibaba/easyexcel — Ecosystem companion: likely used by RuoYi-Vue-Pro for Excel import/export in module services (check pom.xml dependencies)

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive unit tests for yudao-framework core utilities

The yudao-framework module is foundational to the entire system but lacks visible unit test coverage. This is critical for a widely-used open source project, as bugs in framework code affect all dependent modules (yudao-module-system, yudao-module-infra, etc.). Adding tests for core utilities would improve reliability and serve as examples for contributors.

  • [ ] Identify and list all utility/helper classes in yudao-framework/yudao-framework-common and yudao-framework-jackson
  • [ ] Create unit test files matching the package structure (e.g., src/test/java/cn/iocoder/framework/)
  • [ ] Write tests covering edge cases for JSON serialization, validation helpers, and exception handling
  • [ ] Integrate tests into the existing maven.yml GitHub Actions workflow to run on every PR
  • [ ] Document test coverage targets in a new CONTRIBUTING.md file specific to test expectations

Implement automated database schema validation in CI/CD pipeline

The project supports multiple modules (BPM, Pay, Mall, CRM, ERP, IoT, MES) which are currently commented out in pom.xml. Each module likely has SQL migration files, but there's no visible CI validation that schema changes are compatible. This prevents contributors from catching database migration bugs before merging.

  • [ ] Create a new GitHub Actions workflow file: .github/workflows/database-schema-validation.yml
  • [ ] Add a Maven goal to validate SQL migration files in each module's src/main/resources/db directory
  • [ ] Use tools like Flyway validation or custom SQL linting to catch syntax errors and naming convention violations
  • [ ] Document expected schema file naming conventions and locations in docs/DATABASE_MIGRATIONS.md
  • [ ] Add pre-commit hooks configuration to yudao-root/.husky for local validation before push

Add integration test suite for RBAC and multi-tenant data isolation

The project advertises RBAC dynamic permissions and SaaS multi-tenant support as core features, but there are no visible integration tests validating that data isolation actually works across tenants or that permission checks cannot be bypassed. This is a security-critical feature that could regress silently.

  • [ ] Create yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/RbacDataIsolationIT.java
  • [ ] Write integration tests that create multiple tenants and verify users cannot access cross-tenant data
  • [ ] Add tests verifying that RBAC annotations on yudao-module-system service methods properly enforce permissions
  • [ ] Create a new Maven profile (e.g., mvn -P integration-tests) to run these tests separately in CI
  • [ ] Add a section to .github/workflows/maven.yml to run integration tests only on PRs that modify system module code

🌿Good first issues

  • Add missing unit tests for yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/biz/service/user/AdminUserService.java (likely has >50% uncovered methods); copy test pattern from yudao-module-infra test suite
  • Document the SaaS multi-tenant data isolation strategy by adding inline Javadoc to yudao-framework classes containing @DataPermission annotations and creating a docs/MULTI_TENANT.md guide with code examples
  • Implement missing error response translations in yudao-ui-admin/src/locales/i18n (add Chinese to English mappings for new error codes like ERR_TENANT_NOT_FOUND, ERR_PERMISSION_DENIED) by auditing yudao-module-system/src/main/java/**/constants/ErrorCodeConstants.java

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 414fbf5 — 【依赖升级】Phase 1:安全依赖版本升级 (YunaiV)
  • baac4fc — Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro (YunaiV)
  • a9a6bff — 【依赖升级】Phase 1:安全依赖版本升级 (YunaiV)
  • 072b3d6 — feat(ai):补充说明下,wan2.7-image 要注意,等 alibaba ai 兼容!!! (YunaiV)
  • 814a963 — feat: AI 通义千问支持多模态模型,并兼容从 metadata 解析 reasoningContent (YunaiV)
  • ef807be — 🐞 fix(trade): 修复价格计算 3 处缺陷并补齐单测 (YunaiV)
  • 41d5635 — ♻️ refactor(common): HttpUtils.replaceUrlQuery 改用 hutool UrlQuery#remove 替换反射实现,并补充单测,基于 yudao-cloud #248 的二开 (YunaiV)
  • ea3ad5c — ✨ feat(ai):补齐 AI 知识库段落删除接口 DELETE /ai/knowledge/segment/delete,对齐前端 KnowledgeSegmentApi.deleteKnowledgeSegment 调用 (YunaiV)
  • a52a357 — Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro (YunaiV)
  • 0be9af4 — fix(IotDeviceMessageUtils): skip JDK built-in types in reflection to avoid internal field access (YunaiV)

🔒Security observations

The RuoYi-Vue-Pro codebase shows moderate security posture with significant concerns regarding outdated runtime environments. The use of Java 8 and Spring Boot 2.7.18 (both EOL) represents the highest risk factor. While the project structure suggests enterprise-grade architecture with modular design, the security analysis is limited by incomplete visibility into actual dependency versions,

  • High · Outdated Spring Boot Version — pom.xml - Spring Boot 2.7.18 dependency. The project uses Spring Boot 2.7.18, which reached end-of-life in November 2023. This version no longer receives security updates and patches, leaving the application vulnerable to known exploits. Fix: Upgrade to Spring Boot 3.2 or later (as indicated by the version table in README). Spring Boot 3.x includes critical security enhancements and receives active support.
  • High · Java 8 End-of-Life — pom.xml - <java.version>1.8</java.version>. The project targets Java 1.8 (JDK 8), which reached end-of-life in December 2030 for Oracle but mainstream support ended in 2022. Many security vulnerabilities in older Java versions remain unpatched. Fix: Migrate to Java 17 or Java 21 LTS versions. These versions have extended support periods and receive regular security updates.
  • Medium · Incomplete Dependency Visibility — pom.xml - yudao-dependencies module not fully shown. The provided pom.xml snippet does not show the actual dependency versions for critical libraries (Spring Security, MyBatis Plus, Vue dependencies, etc.). Without explicit version pinning, transitive dependencies may include vulnerable versions. Fix: Review the yudao-dependencies module to ensure all dependencies have explicit, up-to-date versions. Use 'mvn dependency:tree' to identify potentially vulnerable transitive dependencies.
  • Medium · Multiple Modules Disabled by Default — pom.xml - commented module declarations. Several feature modules (BPM, Report, Payment, Mall, CRM, ERP, IoT, MES, AI) are commented out. When these are eventually enabled without proper security review, they may introduce vulnerabilities. Fix: Ensure each module undergoes security review before being enabled in production. Maintain a security checklist for module integration.
  • Medium · No Visible Security Headers Configuration — Configuration files not provided in analysis. No evidence of security headers configuration (HSTS, CSP, X-Frame-Options, X-Content-Type-Options) visible in the provided files, which are essential for preventing common web vulnerabilities. Fix: Implement security headers through Spring Security configuration or middleware. Add HSTS, CSP, CSRF protection, and other standard security headers.
  • Medium · Potential Sensitive Data in Repository — .gitignore file content not fully visible. The .gitignore file is present but not shown in detail. Image assets and configuration files visible in directory structure could potentially contain sensitive information if not properly filtered. Fix: Audit .gitignore to ensure it excludes: .env files, credentials, API keys, private certificates, and application.properties/yml with secrets. Add patterns for IDE files and OS artifacts.
  • Low · Plugin Version Awareness — pom.xml - plugin configuration section. While plugin versions are specified (maven-surefire-plugin 3.5.3, maven-compiler-plugin 3.14.0), the actual build security (e.g., GPG signing, integrity checks) is not evident. Fix: Consider implementing Maven artifact signing and verification. Ensure build reproducibility with maven-shade-plugin or similar tools.
  • Low · Snapshot Version in Production — pom.xml - <version>${revision}</version> resolving to SNAPSHOT. The project version is marked as SNAPSHOT (2026.03-jdk8-SNAPSHOT), indicating development versions may be deployed to production, which could include untested or unstable code. Fix: Use semantic versioning for releases (e.g., 2026.03.0). Reserve SNAPSHOT versions only for development environments. Implement CI/CD pipelines to enforce release versioning.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · YunaiV/ruoyi-vue-pro — RepoPilot