PHPackages                             eoads/module-make - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. eoads/module-make

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

eoads/module-make
=================

Artisan command to scaffold Laravel modules with standard folder structure

v1.3.2(5d ago)00MITPHPPHP ^8.2

Since Jun 18Pushed yesterdayCompare

[ Source](https://github.com/olinexs/eoads-module-make)[ Packagist](https://packagist.org/packages/eoads/module-make)[ RSS](/packages/eoads-module-make/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (3)Versions (7)Used By (0)

eoads/module-make
=================

[](#eoadsmodule-make)

> Artisan command to scaffold Laravel modules following the EO-ADS standard structure — backend + frontend together.

---

Requirements
------------

[](#requirements)

- PHP ^8.2
- Laravel 11 or 12

---

Installation
------------

[](#installation)

```
composer require eoads/module-make
```

> If you are starting a new project, install [`eoads/eoads-starter-kit`](https://github.com/olinexs/starter-kit) instead — it includes this package and sets up the full project scaffold.

---

Usage
-----

[](#usage)

**Backend + frontend (default)**

```
php artisan module:make PurchaseOrder
```

**Backend only**

```
php artisan module:make PurchaseOrder --no-frontend
```

**Overwrite an existing module**

```
php artisan module:make PurchaseOrder --force
```

---

Generated structure
-------------------

[](#generated-structure)

Assumes the following project layout:

```
my-project/
├── backend/    ← run artisan from here
└── frontend/

```

### Backend — `backend/Modules/PurchaseOrder/`

[](#backend--backendmodulespurchaseorder)

```
Modules/PurchaseOrder/
├── app/
│   ├── Actions/
│   ├── DTOs/
│   ├── Enums/
│   ├── Events/
│   ├── Http/
│   │   ├── Controllers/
│   │   ├── Requests/
│   │   └── Resources/
│   ├── Models/
│   ├── Notifications/
│   ├── Observers/
│   ├── Policies/
│   ├── Repositories/
│   │   ├── PurchaseOrderRepositoryInterface.php
│   │   └── EloquentPurchaseOrderRepository.php
│   ├── Services/
│   └── Support/
├── Providers/
│   └── PurchaseOrderServiceProvider.php
├── routes/
│   ├── api.php
│   └── web.php
├── tests/
│   ├── Feature/
│   └── Unit/
└── module.json

```

### Frontend — `frontend/resources/js/modules/purchaseOrder/`

[](#frontend--frontendresourcesjsmodulespurchaseorder)

```
purchaseOrder/
├── services/
│   └── purchaseOrderService.js   ← all axios calls
├── stores/
│   └── purchaseOrderStore.js     ← Pinia store
├── views/
│   └── PurchaseOrderView.vue     ← page component
├── components/                   ← local components
└── routes.js                     ← vue-router definitions

```

---

Auto-registered
---------------

[](#auto-registered)

After scaffolding the command automatically:

- Adds `Modules\PurchaseOrder\` → `Modules/PurchaseOrder/app/` to `composer.json` PSR-4
- Enables the module in `modules_statuses.json`

Then run:

```
composer dump-autoload
```

---

Architecture conventions
------------------------

[](#architecture-conventions)

LayerRuleControllerThin — orchestrate only, no business logicFormRequestAll validation here — never `$request->validate()` inlineActionSingle-purpose business logicServiceStateful / multi-step business logicRepositoryAll data access — bound via interface in ServiceProviderMigrationAlways in `backend/database/migrations/` — never inside Modules/

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

6

Last Release

5d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/55356429?v=4)[Caroline Panggabean](/maintainers/olinexs)[@olinexs](https://github.com/olinexs)

### Embed Badge

![Health badge](/badges/eoads-module-make/health.svg)

```
[![Health](https://phpackages.com/badges/eoads-module-make/health.svg)](https://phpackages.com/packages/eoads-module-make)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

9782.1M161](/packages/laravel-ai)[spatie/laravel-export

Create a static site bundle from a Laravel app

672139.5k6](/packages/spatie-laravel-export)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

721160.4k12](/packages/tallstackui-tallstackui)[zidbih/laravel-deadlock

Make temporary Laravel workarounds expire and fail CI when ignored.

984.0k](/packages/zidbih-laravel-deadlock)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[interaction-design-foundation/laravel-geoip

Support for multiple Geographical Location services.

19253.0k3](/packages/interaction-design-foundation-laravel-geoip)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
