Project Directory Structure โ
MineAdmin adopts a modern layered architecture design, providing a clear code organization structure and best practices. This document will detail the project's directory structure, design philosophy, and development standards.
Overview โ
The project structure of MineAdmin draws inspiration from the design philosophy of the Laravel framework while incorporating modern layered architecture patterns. If you are familiar with Laravel development, understanding MineAdmin's structure will be straightforward.
Architectural Philosophy โ
MineAdmin follows these core design principles:
- Layered Architecture: Clear separation into Controller โ Service โ Repository โ Model layers
- Separation of Concerns: Each directory has well-defined responsibility boundaries
- Extensibility: Supports plugin-based development and modular expansion
- Standardization: Adheres to PSR standards and best practices
Root Directory Structure โ
Detailed Directory Explanation โ
/app
- Core Application Directory โ
Contains the core business logic of the application, including controllers, service layers, data layers, and other core components.
Key Features:
- Contains 99% of business logic code
- Follows MVC layered architecture
- Supports modular development
/config
- Configuration Directory โ
Stores all application configuration files, providing flexible environment configuration management.
Typical Configuration Files:
database.php
- Database configurationcache.php
- Cache configurationqueue.php
- Queue configuration
/database
- Database Directory โ
Manages all database-related files, including schema changes and test data.
Directory Structure:
database/
โโโ migrations/ # Database migration files
โโโ seeders/ # Data seeder files
2
3
/storage
- Storage Directory โ
Stores files and data generated during application runtime.
Directory Usage:
uploads/
- User-uploaded filesswagger/
- API documentation files
/tests
- Test Directory โ
Contains automated test suites to ensure code quality and functional correctness.
Test Types:
- Unit Tests - Test individual classes or methods
- Functional Tests - Test complete business processes
- API Tests - Test API endpoints
/web
- Frontend Directory โ
Stores frontend application code and static resource files.
/plugin
- Plugin Directory โ
Stores plugin packages downloaded from the plugin marketplace, supporting system functionality extensions.
In-Depth Analysis of the App Directory โ
The app
directory is the core of the entire application, designed with a strict layered architecture.
Http Directory - Request Handling Layer โ
Responsible for processing all HTTP request entry points, including controllers, middleware, and request validation.
Directory Structure โ
Http/
โโโ Admin/ # Admin module
โ โโโ Controller/ # Admin controllers
โ โโโ Middleware/ # Admin middleware
โ โโโ Request/ # Admin request validation classes
โ โโโ Subscriber/ # Event subscribers
โ โโโ Vo/ # Value object classes
โโโ Api/ # API module
โ โโโ Controller/ # API controllers
โ โ โโโ V1/ # API version control
โ โโโ Middleware/ # API middleware
โ โโโ Request/ # API request validation classes
โ โโโ V1/ # Versioned API request classes
โโโ Common/ # Common module
โ โโโ Controller/ # Common controllers
โ โโโ Event/ # Event classes
โ โโโ Middleware/ # Common middleware
โ โโโ Request/ # Common request classes
โ โโโ Result.php # Response result class
โ โโโ ResultCode.php # Result status codes
โ โโโ Swagger/ # API documentation configuration
โโโ CurrentUser.php # Current user context
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Modular Architecture Explanation โ
Admin Module - Backend management features
- Includes permission management, user management, menu management, and other backend functions
- Uses a complete MVC structure with event subscribers and value objects
Api Module - External API interfaces
- Supports version control (V1, V2, etc.)
- Independent authentication middleware and request validation
- RESTful API design standards
Common Module - Shared components
- Provides cross-module shared basic functionality
- Unified response format and status code management
- API documentation auto-generation configuration
Service Directory - Business Logic Layer โ
The Service layer implements core business logic, responsible for business rule orchestration and execution.
Design Principles โ
- Single Responsibility - Each Service class handles only one business domain
- Dependency Injection - Dependencies are injected via constructors
- Transaction Management - Ensures atomicity of business operations
- Exception Handling - Unified exception handling mechanism
Service Layer Responsibilities โ
Core Functions:
- Business logic orchestration and execution
- Transaction management and data consistency
- Calls to Repository layer for data operations
- Business rule validation and processing
Repository Directory - Data Access Layer โ
The Repository pattern provides an abstraction layer for data access, encapsulating data query and operation logic.
Design Features โ
- Data Source Abstraction - Easy switching between data sources (MySQL, Redis, ES, etc.)
- Query Reuse - Reuse of common query logic
- Cache Integration - Transparent cache layer integration
- Performance Optimization - Query optimization and batch operations
Repository Layer Characteristics โ
Main Responsibilities:
- Data access abstraction layer
- Complex query logic encapsulation
- Cache strategy implementation
- Data source switching and optimization
Model Directory - Data Model Layer โ
The Model layer is based on Hyperf's Eloquent ORM, providing object-relational mapping for database tables.
Model Features โ
- Relationships - Defines table relationships
- Accessors/Mutators - Data formatting
- Event Listeners - Model lifecycle events
- Soft Deletes - Logical delete support
Model Layer Characteristics โ
Core Functions:
- Data table mapping and relationship definition
- Attribute accessors and mutators
- Model events and observers
- Data type conversion and validation
Exceptions Directory - Exception Handling โ
Unified exception handling mechanism providing friendly error messages and logging.
Schema Directory - API Documentation โ
Contains Swagger/OpenAPI documentation definitions for API documentation generation.
Important Note
Schema classes are strictly prohibited from participating in business logic scheduling and are used solely for API documentation generation.
Development Best Practices โ
Code Organization Standards โ
Naming Conventions
- Class names use
PascalCase
- Method names use
camelCase
- Constants use
UPPER_SNAKE_CASE
- Class names use
File Organization
- One class per file
- Filename matches class name
- Proper use of namespaces
Dependency Injection
- Prefer constructor injection
- Avoid static calls
- Interface-oriented programming
Architectural Pattern Recommendations โ
Error Handling Strategies โ
Exception Classification
- Business exceptions - Expected errors
- System exceptions - Unexpected errors
- Validation exceptions - Data format errors
Logging
- Critical operation logging
- Exception information logging
- Performance monitoring logging
Related Resources โ
Reference Documentation โ
ORM Differences Note
MineAdmin uses the coroutine version of Eloquent ORM maintained by Hyperf, which has some differences from the official Laravel version. Please be aware of special usage patterns in coroutine environments during development.