Docs/Module Structure
Module Development

Module Structure

Standard directory layout for AutoCom modules.

Complete Module Structure

modules/
└── ShippingDelhivery/
    ├── module.json                    # Module manifest (required)
    │
    ├── backend/                       # Laravel code
    │   ├── ShippingDelhiveryServiceProvider.php
    │   │
    │   ├── App/
    │   │   ├── Http/
    │   │   │   ├── Controllers/
    │   │   │   │   ├── DelhiveryController.php
    │   │   │   │   └── DelhiveryWebhookController.php
    │   │   │   ├── Requests/
    │   │   │   │   └── CreateShipmentRequest.php
    │   │   │   └── Resources/
    │   │   │       └── ShipmentResource.php
    │   │   │
    │   │   ├── Models/
    │   │   │   └── DelhiveryConnection.php
    │   │   │
    │   │   └── Services/
    │   │       └── DelhiveryService.php
    │   │
    │   ├── Config/
    │   │   └── config.php
    │   │
    │   ├── Database/
    │   │   └── Migrations/
    │   │       └── 2024_01_01_create_delhivery_connections.php
    │   │
    │   ├── Jobs/
    │   │   └── SyncTrackingStatus.php
    │   │
    │   ├── Listeners/
    │   │   └── HandleOrderShipped.php
    │   │
    │   └── routes/
    │       └── api.php
    │
    └── frontend/                      # React/Next.js code
        ├── index.ts                   # Main exports
        ├── types/
        │   └── shipment.ts
        ├── hooks/
        │   └── use-delhivery.ts
        └── components/
            ├── ShipmentTracker.tsx
            └── LabelDownload.tsx

Key Files Explained

module.json

Required manifest file at module root. Defines metadata, dependencies, and configuration schema.

See manifest documentation →

ServiceProvider.php

The module's entry point. Registers routes, migrations, config, and service bindings. Located at backend/{ModuleName}ServiceProvider.php.

routes/api.php

API route definitions. Routes are automatically prefixed with the module alias.

frontend/index.ts

Main export file for frontend code. Re-exports all public components, hooks, and types.

Backend Directory

DirectoryPurpose
App/Http/Controllers/API controllers for module endpoints
App/Http/Requests/Form request validation classes
App/Http/Resources/API resource transformers
App/Models/Eloquent models specific to this module
App/Services/Business logic and external API integrations
Config/Module configuration files
Database/Migrations/Database migrations for module tables
Jobs/Queued jobs for async processing
Listeners/Event listeners for core events
routes/API and webhook route definitions

Frontend Directory

DirectoryPurpose
types/TypeScript interfaces and types
hooks/React hooks for data fetching and state
components/Reusable React components
index.tsMain export file for all public APIs

Naming Conventions

Module directoryPascalCaseShippingDelhivery
Module aliaskebab-caseshipping-delhivery
PHP namespaceModules\{Name}Modules\ShippingDelhivery
Service Provider{Name}ServiceProviderShippingDelhiveryServiceProvider
Controllers{Entity}ControllerDelhiveryController
Database tablessnake_casedelhivery_connections