This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
RuoYi v3.9.0 — a Java backend + Vue 2 frontend admin management framework with Spring Boot, Spring Security, JWT authentication, and a built-in code generator. This is a multi-module Maven project with a separate ruoyi-ui frontend.
# Windows — start/stop/restart/status of ruoyi-admin.jar
ry.bat
# Maven build (from project root)
mvn clean package
# Run locally (from project root)
mvn spring-boot:run -pl ruoyi-admin
cd ruoyi-ui
# Install dependencies
npm install
# Development (hot reload, proxy to backend)
npm run dev
# Production build
npm run build:prod
# Staging build
npm run build:stage
# Preview built output
npm run preview
# Swagger API docs (after backend starts)
http://localhost:80/swagger-ui.html
# Code generator UI (after backend starts)
http://localhost:80/tool/build
| Module | Purpose |
|---|---|
ruoyi-admin |
Boot entry point, web controllers, serves ruoyi-ui/ as static resources via RuoYiServletInitializer |
ruoyi-framework |
Security (JWT filter chain), cross-cutting config (Redis, datasource, WebMvc), AOP/logging |
ruoyi-system |
Business domain: controller / service / mapper / domain layers for users, depts, roles, menus, posts, dicts, notices |
ruoyi-common |
Shared: annotations (@Log), constants, enums, utils, XSS filter, exception base classes |
ruoyi-quartz |
Scheduled task scheduling |
ruoyi-generator |
Database table → CRUD code generation (Velocity templates) |
Package layout within each domain module follows: com.ruoyi.<module>.controller, .service, .service.impl, .mapper, .domain.
src/api/ — Axios API modules per domain (login.js, system/, monitor/, tool/)src/utils/ — Auth utilities: auth.js (token storage), request.js (axios instance with JWT interceptor), permission.js (前端路由守卫和RBAC指令 v-permission)src/store/modules/ — Vuex: user.js (user info + token), permission.js (routes + perms), dict.js, tagsView.js, app.js, settings.jssrc/views/ — Page components organized by domain (system/, monitor/, tool/, dashboard/)src/layout/ — Outer shell layout (sidebar, navbar, tags view)POST /login with username + password (password RSA-encrypted via jsencrypt.js)JwtAuthenticationFilter validates credentials, JwtTokenUtil generates a signed JWTlocalStorage via auth.js / user.js Vuex modulerequest.js axios interceptor attaches Authorization: Bearer <token> to every requestJwtAuthenticationFilter on every request validates the token and populates SecurityContext/tool/build to generate CRUD filesruoyi-generator/src/main/resources/vm/ (Velocity .vm files)sql/ry_20250522.sqlsql/quartz.sqlpom.xml)@vue/cli-service 4.4