# Project Structure ## Root Layout ``` ├── yudao-dependencies/ # Maven BOM - dependency version management ├── yudao-framework/ # Reusable framework starters ├── yudao-server/ # Main application entry point (Spring Boot app) ├── yudao-module-*/ # Business modules ├── yudao-ui/ # Frontend projects ├── sql/ # Database scripts for various databases └── script/ # DevOps scripts (Docker, Jenkins, shell) ``` ## Framework Modules (yudao-framework/) Custom Spring Boot starters providing reusable infrastructure: - `yudao-common` - Common utilities, base classes, constants - `yudao-spring-boot-starter-web` - Web/REST configuration - `yudao-spring-boot-starter-security` - Authentication & authorization - `yudao-spring-boot-starter-mybatis` - Database/ORM configuration - `yudao-spring-boot-starter-redis` - Redis/caching - `yudao-spring-boot-starter-mq` - Message queue abstraction - `yudao-spring-boot-starter-job` - Scheduled tasks (Quartz) - `yudao-spring-boot-starter-biz-tenant` - Multi-tenant support - `yudao-spring-boot-starter-biz-data-permission` - Data permission - `yudao-spring-boot-starter-excel` - Excel import/export - `yudao-spring-boot-starter-protection` - Rate limiting, idempotency - `yudao-spring-boot-starter-test` - Test utilities ## Business Modules (yudao-module-*) Each module follows the same internal structure: - `yudao-module-system` - Core system (users, roles, menus, tenants) - `yudao-module-infra` - Infrastructure (code gen, file storage, jobs) - `yudao-module-bpm` - Workflow/BPM (Flowable) - `yudao-module-report` - Reports & dashboards - `yudao-module-pay` - Payment system - `yudao-module-member` - Member/customer center - `yudao-module-mp` - WeChat Official Account - `yudao-module-mall` - E-commerce (product, trade, promotion) - `yudao-module-crm` - CRM system - `yudao-module-erp` - ERP system - `yudao-module-ai` - AI/LLM integration - `yudao-module-iot` - IoT platform ## Module Internal Structure ``` yudao-module-xxx/ └── src/main/java/cn/iocoder/yudao/module/xxx/ ├── api/ # Internal APIs for cross-module calls ├── controller/ # REST controllers (admin/, app/ subfolders) ├── convert/ # MapStruct converters (DO <-> VO) ├── dal/ # Data access layer │ ├── dataobject/ # Entity classes (DO suffix) │ ├── mysql/ # MyBatis mappers │ └── redis/ # Redis DAOs ├── enums/ # Module-specific enums ├── framework/ # Module-specific config ├── job/ # Scheduled jobs ├── mq/ # Message producers/consumers └── service/ # Business logic services ``` ## Frontend Structure (yudao-ui/yudao-ui-admin-vue3/) ``` src/ ├── api/ # API request functions ├── assets/ # Static assets ├── components/ # Reusable Vue components ├── config/ # App configuration ├── hooks/ # Vue composables ├── layout/ # Page layouts ├── locales/ # i18n translations ├── router/ # Vue Router config ├── store/ # Pinia stores ├── styles/ # Global styles ├── types/ # TypeScript types ├── utils/ # Utility functions └── views/ # Page components (organized by module) ``` ## Configuration Files - Backend: `yudao-server/src/main/resources/application-{profile}.yaml` - Frontend: `.env`, `.env.dev`, `.env.prod`, `.env.local` ## Database Scripts Located in `sql/{database}/`: - `ruoyi-vue-pro.sql` - Main schema - `quartz.sql` - Quartz scheduler tables