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.tsxKey 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
| Directory | Purpose |
|---|---|
| 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
| Directory | Purpose |
|---|---|
| types/ | TypeScript interfaces and types |
| hooks/ | React hooks for data fetching and state |
| components/ | Reusable React components |
| index.ts | Main export file for all public APIs |
Naming Conventions
| Module directory | PascalCase | ShippingDelhivery |
| Module alias | kebab-case | shipping-delhivery |
| PHP namespace | Modules\{Name} | Modules\ShippingDelhivery |
| Service Provider | {Name}ServiceProvider | ShippingDelhiveryServiceProvider |
| Controllers | {Entity}Controller | DelhiveryController |
| Database tables | snake_case | delhivery_connections |