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

  1. Module System

    • Each module is independent
    • Self-contained functionality
    • Reusable across projects
  2. Service Providers

    • Register modules
    • Handle module bootstrapping
    • Configure module services
  3. Middleware

    • Module-specific middleware
    • Request/Response handling
    • Authentication/Authorization
  4. Config Files

    • Module configuration
    • Environment variables
    • Third-party services

Best Practices

  1. Module Independence

    • Minimize inter-module dependencies
    • Use events for communication
    • Implement clear interfaces
  2. Code Organization

    • Follow PSR standards
    • Use namespaces effectively
    • Maintain consistent structure
  3. Testing

    • Unit tests per module
    • Feature tests for integration
    • Maintain test coverage