6.0 KiB
6.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
RuoYi-Vue v3.9.1 is a rapid development platform with Spring Boot + Vue.js separated architecture. It provides a complete admin dashboard system with JWT authentication, role-based access control, code generation, and 18 built-in functional modules.
Technology Stack:
- Backend: Spring Boot 2.5.15, Spring Security 5.7.14, MyBatis, Redis, JWT
- Frontend: Vue 2.6.12, Element UI 2.15.14, Vuex 3.6.0, Vue Router 3.4.9
- Database: MySQL with Druid connection pool
- Build: Maven (backend), Vue CLI 4.4.6 (frontend)
Project Structure
RuoYi-Vue/
├── pom.xml # Root Maven configuration
├── ruoyi-admin/ # Web service entry point (Controllers, Config)
├── ruoyi-framework/ # Core framework (Security, AOP, Interceptors)
├── ruoyi-system/ # System business logic (Services, Mappers)
├── ruoyi-common/ # Common utilities, constants, exceptions
├── ruoyi-quartz/ # Scheduled tasks module
├── ruoyi-generator/ # Code generation module
└── ruoyi-ui/ # Frontend Vue.js application
├── package.json
├── vue.config.js # Webpack config with proxy to backend
├── .env.development # Dev environment (VUE_APP_BASE_API=/dev-api)
├── .env.production # Prod environment (VUE_APP_BASE_API=/prod-api)
└── src/
├── api/ # API service layer
├── components/ # Reusable components
├── directive/ # Custom directives (permission, etc.)
├── layout/ # Layout components
├── plugins/ # Plugins (cache, modal, download)
├── router/ # Vue Router configuration
├── store/ # Vuex store modules
├── utils/ # Utility functions
└── views/ # Page views (login, system, monitor, tool)
Development Commands
Backend (Maven)
# Package application (skips tests)
mvn clean package -Dmaven.test.skip=true
# Run application from JAR
cd ruoyi-admin/target
java -jar ruoyi-admin.jar
# Or use provided scripts from project root
./ry.sh start|stop|restart|status # Unix
ry.bat # Windows
Frontend (npm)
cd ruoyi-ui
# Install dependencies
npm install
# Development server (runs on port 80, proxies /dev-api to localhost:8080)
npm run dev
# Production build
npm run build:prod
# Staging build
npm run build:stage
# Preview production build
npm run preview
Architecture Patterns
Backend Architecture
Module Dependencies:
ruoyi-admin→ruoyi-framework→ruoyi-system→ruoyi-commonruoyi-generatorandruoyi-quartzare independent modules
Key Patterns:
- Layered Architecture: Controller → Service → Mapper → Domain
- Security: JWT + Spring Security with role-based access control
- Dynamic Datasource: Primary/secondary database support via Druid
- AOP: Aspect-oriented logging (
@Logannotation) and data scope filtering - Global Exception Handling:
GlobalExceptionHandlerwithAjaxResultwrapper - XSS Prevention: Built-in XSS filtering via
XssFilter - Repeat Submit Prevention:
@RepeatSubmitannotation with interceptor
Key Files:
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java- Entry pointruoyi-admin/src/main/resources/application.yml- Main configurationruoyi-admin/src/main/resources/application-druid.yml- Database configurationruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java- Security configruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java- Logging aspect
Frontend Architecture
Key Patterns:
- Route Guards:
permission.jshandles JWT token validation and dynamic route generation - Axios Interceptors: Request/response handling in
utils/request.js - Global Methods: Mounted on Vue prototype (e.g.,
this.getDicts(),this.parseTime()) - Global Components:
DictTag,Pagination,RightToolbar,Editor,FileUpload,ImageUpload - Store Modules:
user,app,tagsView,permission,settings - Directives:
v-hasPermi,v-hasRole,v-debounce,v-copy,v-ellipsis
API Proxy Configuration:
- Development:
/dev-api→http://localhost:8080 - Production:
/prod-api→ configured via nginx or context
Key Files:
ruoyi-ui/src/main.js- Entry point with global registrationsruoyi-ui/src/permission.js- Route permission controlruoyi-ui/src/utils/request.js- Axios configurationruoyi-ui/src/utils/ruoyi.js- Common utility functionsruoyi-ui/src/store/modules/permission.js- Dynamic route generation
Code Generation
The code generator creates CRUD operations from database tables:
- Access the generator UI at System → Code Generator
- Import a table from the database
- Configure field types, validation, and UI options
- Generate code (creates backend + frontend files)
- Copy generated files to appropriate directories
Templates are in ruoyi-generator/src/main/resources/vm/
Database
- Main schema:
sql/ry_20250522.sql - Quartz tables:
sql/quartz.sql - Default login: admin/admin123
Common Development Notes
- Backend runs on port 8080 by default
- Frontend dev server runs on port 80 with proxy to backend
- Swagger API docs available at
/swagger-ui/index.htmlwhen enabled - Redis required for caching and session storage
- File upload path configured in
application.ymlunderruoyi.profile