Structure
Explore the project structure and organization patterns.
Project Structure
This document explains the HMVC-based structure of our application.
Directory Structure
project-root/
├── app/
│ ├── Modules/ # HMVC Modules
│ │ ├── Module1/
│ │ │ ├── Controllers/
│ │ │ ├── Models/
│ │ │ ├── Views/
│ │ │ └── routes.php
│ │ └── Module2/
│ │ ├── Controllers/
│ │ ├── Models/
│ │ ├── Views/
│ │ └── routes.php
│ ├── Http/
│ └── Providers/
├── config/
├── database/
├── public/
├── resources/
└── routes/
HMVC Module Structure
Each module in our HMVC architecture follows this structure:
Controllers
- Handle HTTP requests
- Process business logic
- Return responses
Models
- Define database relationships
- Handle data operations
- Implement business rules
Views
- Contains blade templates
- Handles presentation logic
- Reusable components
Routes
- Module-specific routes
- API endpoints
- Route middleware
Key Components
-
Module System
- Each module is independent
- Self-contained functionality
- Reusable across projects
-
Service Providers
- Register modules
- Handle module bootstrapping
- Configure module services
-
Middleware
- Module-specific middleware
- Request/Response handling
- Authentication/Authorization
-
Config Files
- Module configuration
- Environment variables
- Third-party services
Best Practices
-
Module Independence
- Minimize inter-module dependencies
- Use events for communication
- Implement clear interfaces
-
Code Organization
- Follow PSR standards
- Use namespaces effectively
- Maintain consistent structure
-
Testing
- Unit tests per module
- Feature tests for integration
- Maintain test coverage