PHPackages                             ngodingskuyy/laravel-module-generator - 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. [Admin Panels](/categories/admin)
4. /
5. ngodingskuyy/laravel-module-generator

ActiveLibrary[Admin Panels](/categories/admin)

ngodingskuyy/laravel-module-generator
=====================================

Modular CRUD Generator for Laravel + Vue + Tailwind (shadcn-vue)

v4.8(7mo ago)3155[1 PRs](https://github.com/ilhamridho04/laravel-module-generator/pulls)MITPHPPHP ^8.2CI passing

Since Jul 6Pushed 6mo agoCompare

[ Source](https://github.com/ilhamridho04/laravel-module-generator)[ Packagist](https://packagist.org/packages/ngodingskuyy/laravel-module-generator)[ Docs](https://github.com/ilhamridho04/laravel-module-generator)[ RSS](/packages/ngodingskuyy-laravel-module-generator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (4)Versions (15)Used By (0)

Laravel Module Generator v4.5
=============================

[](#laravel-module-generator-v45)

**🚀 Laravel 12+ Focused Module Generator**

[![Tests](https://github.com/ilhamridho04/laravel-module-generator/actions/workflows/run-tests.yml/badge.svg)](https://github.com/ilhamridho04/laravel-module-generator/actions/workflows/run-tests.yml)

Modular CRUD Generator for Laravel + Vue + Tailwind (shadcn-vue) - **Optimized for Laravel 12+ with PHP 8.2+**

> **Version 4.6** is a complete refactor focused exclusively on Laravel 12+ with comprehensive testing, improved code generation, modern best practices, and **smart routes auto-installation**.

---

📋 Requirements
--------------

[](#-requirements)

- **PHP**: ^8.2
- **Laravel**: ^12.0
- **Spatie Laravel Permission**: ^6.0

📦 Installation
--------------

[](#-installation)

### Quick Installation

[](#quick-installation)

```
composer require ngodingskuyy/laravel-module-generator --dev
```

### ⚠️ If You Encounter Version Conflicts

[](#️-if-you-encounter-version-conflicts)

Due to older versions on Packagist, you might need to install from source:

```
# Option 1: Install from GitHub (Recommended)
composer config repositories.ngodingskuyy-laravel-module-generator vcs https://github.com/ilhamridho04/laravel-module-generator
composer require ngodingskuyy/laravel-module-generator:dev-main --dev
```

```
# Option 2: Local development
git clone https://github.com/ilhamridho04/laravel-module-generator.git packages/laravel-module-generator
composer config repositories.local path ./packages/laravel-module-generator
composer require ngodingskuyy/laravel-module-generator:@dev --dev
```

**For detailed troubleshooting, see [DEVELOPMENT.md](DEVELOPMENT.md)**

---

🚀 Features
----------

[](#-features)

### ✨ **What's New in v4.5**

[](#-whats-new-in-v45)

- 🎯 **Smart Routes Auto-Installation**: Automatic routes integration with zero manual setup
- 🔧 **Enhanced Commands**: New `module:setup` and `module:install` commands
- 🌐 **Complete Routes Separation**: Web and API routes properly separated
- 🤖 **Interactive Installation**: Auto-detect and offer installation when generating features
- 🧪 **Comprehensive Testing**: 98 tests with 385+ assertions (94% pass rate)
- � **Laravel 11+ Support**: Full support for `routes/app.php` and traditional routes
- � **API Responser Integration**: Consistent JSON responses with reusable trait
- 🎨 **Mode Selection**: Full-stack, API-only, or View-only generation modes

### 🔧 **Core Features**

[](#-core-features)

- ✅ **Full CRUD Generation**: Model, migration, controller, requests, Vue components, routes, permission seeder
- 📦 **Modular Architecture**: Better separation of concerns per feature
- 🎨 **Modern Frontend**: Vue 3 + TailwindCSS + shadcn-vue components
- 🔐 **Permission System**: Auto-generated permissions using Spatie Laravel Permission
- 🧰 **Customizable Stubs**: Fully customizable templates with intelligent fallback support
- 🔧 **Optional Components**: Generate factories, policies, observers, enums, and tests on demand
- 🌐 **Smart Routes**: Auto-setup and integration with proper web/API separation

---

� Requirements
--------------

[](#-requirements-1)

- **PHP**: ^8.2
- **Laravel**: ^11.0
- **Spatie Laravel Permission**: ^6.0

�📦 Installation
---------------

[](#-installation-1)

```
composer require ngodingskuyy/laravel-module-generator --dev
```

For local development/testing:

```
{
  "repositories": [
    {
      "type": "path",
      "url": "./path/to/laravel-module-generator"
    }
  ]
}
```

Then:

```
composer require ngodingskuyy/laravel-module-generator:@dev
```

---

🔧 Usage
-------

[](#-usage)

### Interactive Mode (Recommended)

[](#interactive-mode-recommended)

```
# Interactive menu will appear to choose generation mode
php artisan module:create User
```

**Interactive Menu Options:**

```
🎯 Pilih mode pembuatan fitur:
   1. Full-stack (API + Views) - Lengkap dengan controller, routes, views
   2. API Only - Hanya API controller, routes, dan requests
   3. View Only - Hanya Vue views dan web controller

🤔 Pilih mode generation
  [1] Full-stack (API + Views)
  [2] API Only
  [3] View Only
 > 1

```

### Direct Mode Options

[](#direct-mode-options)

#### API-Only Mode

[](#api-only-mode)

Generate only API controllers, routes, and requests (no Vue views):

```
php artisan module:create User --api
```

**What gets generated:**

- ✅ Controller with JSON responses in `app/Http/Controllers/Api/` folder
- ✅ API routes (`routes/Modules/Users/api.php`) with `auth:sanctum` middleware
- ✅ Store/Update Request classes
- ✅ Model, Migration, Permission seeder
- ❌ No Vue views

**File Structure:**

```
app/
├── Http/
│   ├── Controllers/
│   │   └── API/
│   │       └── UserController.php  # API Controller
│   └── Requests/
│       ├── StoreUserRequest.php
│       └── UpdateUserRequest.php
└── Models/
    └── User.php
routes/
└── Modules/
    └── Users/
        └── api.php  # API routes

```

#### View-Only Mode

[](#view-only-mode)

Generate only Vue views and web controllers (no API routes or requests):

```
php artisan module:create User --view
```

**What gets generated:**

- ✅ Controller with Inertia responses and `auth` middleware
- ✅ Web routes (`routes/Modules/Users/web.php`)
- ✅ Vue components (Index, Create, Edit, Show)
- ✅ Model, Migration, Permission seeder
- ❌ No Request classes (uses simple validation)

#### Full-Stack Mode (Default)

[](#full-stack-mode-default)

Generate both API and Views (complete CRUD):

```
# These are equivalent
php artisan module:create User
# Select option 1 in interactive menu
```

**What gets generated:**

- ✅ Controller with Inertia responses
- ✅ Web routes
- ✅ Vue components
- ✅ Store/Update Request classes
- ✅ Model, Migration, Permission seeder

### With Optional Components

[](#with-optional-components)

```
php artisan module:create User --with=factory,policy,observer,enum,test
```

### Force Overwrite Existing Files

[](#force-overwrite-existing-files)

```
php artisan module:create User --force
```

### 🗑️ Deleting Features

[](#️-deleting-features)

#### Delete Basic Feature

[](#delete-basic-feature)

```
php artisan module:delete User
```

#### Delete with Optional Components

[](#delete-with-optional-components)

```
php artisan module:delete User --with=factory,policy,observer,enum,test
```

#### Delete All Components (including optional)

[](#delete-all-components-including-optional)

```
php artisan module:delete User --all
```

#### Force Delete (no confirmation)

[](#force-delete-no-confirmation)

```
php artisan module:delete User --force
```

#### What Gets Deleted

[](#what-gets-deleted)

The `module:delete` command will remove:

- **Core Files**: Model, Controller, Requests, Vue components, Routes, Migration, Permission seeder
- **Optional Components**: Enum, Observer, Policy, Factory, Test files (if specified with `--with` or `--all`)
- **Empty Directories**: Automatically cleans up empty directories after deletion
- **Service Provider**: Removes observer registration from AppServiceProvider (if applicable)

> ⚠️ **Warning**: This action is irreversible. Make sure to backup your files or use version control.

### 🔗 Routes Auto-Installation (New in v4.5)

[](#-routes-auto-installation-new-in-v45)

#### One-Command Setup (Recommended)

[](#one-command-setup-recommended)

```
# Setup and install routes automatically
php artisan module:install
```

This will:

- ✅ Create `routes/modules.php` (web routes loader)
- ✅ Create `routes/api-modules.php` (API routes loader)
- ✅ Auto-integrate into `routes/web.php` or `routes/app.php` (Laravel 11+)
- ✅ Auto-integrate into `routes/api.php`

#### Manual Setup (Alternative)

[](#manual-setup-alternative)

```
# 1. Create loader files only
php artisan module:setup

# 2. Then manually add to routes/web.php:
# require __DIR__ . '/modules.php';

# 3. And to routes/api.php:
# require __DIR__ . '/api-modules.php';
```

#### Smart Auto-Installation

[](#smart-auto-installation)

When you generate a feature, the system will automatically detect if routes are not installed and offer to install them:

```
php artisan module:create Product

# Output:
# ⚠️  Untuk mengaktifkan auto-loading web modules, pilih salah satu:
#    1. Otomatis install:
#       php artisan module:install
#
#    2. Manual install:
#       Di routes/web.php:
#       require __DIR__ . '/modules.php';
#
# 🤔 Mau auto-install sekarang? (yes/no) [yes]:
```

#### Routes Structure

[](#routes-structure)

After installation, your routes will be organized like this:

```
routes/
├── web.php              # Contains: require __DIR__ . '/modules.php';
├── api.php              # Contains: require __DIR__ . '/api-modules.php';
├── modules.php          # Auto-loads all web.php from Modules/
├── api-modules.php      # Auto-loads all api.php from Modules/
└── Modules/
    └── Products/
        ├── web.php      # Web routes with auth middleware
        └── api.php      # API routes with auth:sanctum middleware

```

### Generated Files Structure

[](#generated-files-structure)

Running `php artisan module:create User` will generate:

```
📁 Generated Files:
├── app/Models/User.php                              # Eloquent Model with SoftDeletes
├── app/Http/Controllers/UserController.php         # Resource Controller
├── app/Http/Requests/StoreUserRequest.php         # Store Validation
├── app/Http/Requests/UpdateUserRequest.php        # Update Validation
├── resources/js/pages/Users/
│   ├── Index.vue                                   # List View
│   ├── Create.vue                                  # Create Form
│   ├── Edit.vue                                    # Edit Form
│   └── Show.vue                                    # Detail View
├── routes/Modules/Users/web.php                    # Module Routes
├── database/seeders/Permission/UsersPermissionSeeder.php  # Permissions
└── database/migrations/2025_xx_xx_create_users_table.php  # Migration

📁 Optional Components (with --with flag):
├── app/Factories/UserFactory.php                   # Model Factory
├── app/Policies/UserPolicy.php                     # Authorization Policy
├── app/Observers/UserObserver.php                  # Model Observer
├── app/Enums/UserStatus.php                        # Status Enum
└── tests/Feature/UserFeatureTest.php               # Feature Tests

```

---

📚 API Documentation
-------------------

[](#-api-documentation)

### Commands Overview

[](#commands-overview)

The Laravel Module Generator provides four main commands for complete feature lifecycle management:

CommandDescriptionPurpose`module:create`Generate complete CRUD featureCreate new features`module:delete`Remove complete CRUD featureClean up features`setup:modules-loader`Create modular route loaderSetup route automation`install:modules-loader`Install route loader into LaravelIntegrate with Laravel routing---

### 📝 `module:create` Command

[](#-modulecreate-command)

**Signature:** `module:create {name} {--with=*} {--force}`

#### Description

[](#description)

Generates a complete CRUD feature with all necessary files including models, controllers, views, migrations, routes, and permissions.

#### Arguments

[](#arguments)

ArgumentTypeRequiredDescription`name`stringYesThe name of the feature to generate (PascalCase)#### Options

[](#options)

OptionTypeDefaultDescription`--with`array`[]`Optional components to include`--force`flag`false`Overwrite existing files without confirmation#### Optional Components (`--with`)

[](#optional-components---with)

ComponentDescriptionGenerated Files`factory`Model factory for testing`database/factories/{Name}Factory.php``policy`Authorization policy`app/Policies/{Name}Policy.php``observer`Model observer`app/Observers/{Name}Observer.php``enum`Status enum class`app/Enums/{Name}StatusEnum.php``test`Feature test class`tests/Feature/{Name}Test.php`#### Generated Files (Core)

[](#generated-files-core)

```
# Models
app/Models/{Name}.php

# Controllers
app/Http/Controllers/{Name}Controller.php

# Requests
app/Http/Requests/{Name}/Store{Name}Request.php
app/Http/Requests/{Name}/Update{Name}Request.php

# Vue Components
resources/js/Pages/{Name}/Index.vue
resources/js/Pages/{Name}/Create.vue
resources/js/Pages/{Name}/Edit.vue
resources/js/Pages/{Name}/Show.vue

# Database
database/migrations/{timestamp}_create_{name}_table.php

# Routes
routes/{name}.php

# Seeders
database/seeders/{Name}PermissionSeeder.php
```

#### Usage Examples

[](#usage-examples)

```
# Basic feature generation
php artisan module:create Product

# With optional components
php artisan module:create Product --with=factory,policy,observer

# With all optional components
php artisan module:create Product --with=factory,policy,observer,enum,test

# Force overwrite existing files
php artisan module:create Product --force

# Multiple optional components (alternative syntax)
php artisan module:create Product --with factory --with policy --with observer
```

#### Return Codes

[](#return-codes)

CodeMeaning`0`Success - All files generated successfully`1`Error - Missing required arguments or validation failed`2`Error - File already exists and `--force` not specified---

### 🗑️ `module:delete` Command

[](#️-moduledelete-command)

**Signature:** `module:delete {name} {--with=*} {--all} {--force}`

#### Description

[](#description-1)

Safely removes all files associated with a feature, including optional components and empty directories.

#### Arguments

[](#arguments-1)

ArgumentTypeRequiredDescription`name`stringYesThe name of the feature to delete (PascalCase)#### Options

[](#options-1)

OptionTypeDefaultDescription`--with`array`[]`Optional components to delete`--all`flag`false`Delete all components (core + optional)`--force`flag`false`Delete without confirmation prompt#### Deletion Scope

[](#deletion-scope)

**Core Files (always deleted):**

- Model, Controller, Requests
- Vue Components (Index, Create, Edit, Show)
- Migration, Routes, Permission Seeder

**Optional Files (with `--with` or `--all`):**

- Factory, Policy, Observer, Enum, Test files

**Directory Cleanup:**

- Removes empty directories after file deletion
- Maintains directory structure if other files exist

#### Usage Examples

[](#usage-examples-1)

```
# Delete core feature files
php artisan module:delete Product

# Delete with specific optional components
php artisan module:delete Product --with=factory,policy

# Delete everything (core + all optional)
php artisan module:delete Product --all

# Force delete without confirmation
php artisan module:delete Product --force

# Delete with confirmation showing file list
php artisan module:delete Product --with=factory,policy,observer
```

#### Interactive Confirmation

[](#interactive-confirmation)

When `--force` is not used, the command shows:

1. List of files to be deleted
2. Confirmation prompt
3. Deletion progress with status for each file

#### Return Codes

[](#return-codes-1)

CodeMeaning`0`Success - All specified files deleted`1`Error - Feature not found or validation failed`2`Cancelled - User declined confirmation---

### 🔄 `setup:modules-loader` Command

[](#-setupmodules-loader-command)

**Signature:** `setup:modules-loader {--force}`

#### Description

[](#description-2)

Creates the modular route loader file that automatically discovers and loads route files from the `routes/modules/` directory.

#### Options

[](#options-2)

OptionTypeDefaultDescription`--force`flag`false`Overwrite existing modules.php file#### Generated Files

[](#generated-files)

```
routes/modules.php    # Main modules loader file
```

#### Features

[](#features)

- **Auto-discovery**: Recursively scans `routes/modules/` directory
- **Performance optimized**: Only loads existing files
- **Nested support**: Handles subdirectories automatically
- **Cache compatible**: Works with Laravel's route caching

#### Usage Examples

[](#usage-examples-2)

```
# Create modules loader
php artisan setup:modules-loader

# Force overwrite existing file
php artisan setup:modules-loader --force
```

#### Generated Code Structure

[](#generated-code-structure)

The generated `routes/modules.php` contains:

- File existence checks for performance
- Recursive directory scanning
- Automatic route file inclusion
- Error handling for missing directories

---

### ⚙️ `install:modules-loader` Command

[](#️-installmodules-loader-command)

**Signature:** `install:modules-loader {--force}`

#### Description

[](#description-3)

Integrates the modules loader into Laravel's main routing system by adding the include statement to `routes/web.php`.

#### Options

[](#options-3)

OptionTypeDefaultDescription`--force`flag`false`Add include even if already exists#### Modifications

[](#modifications)

**File Modified:** `routes/web.php`

**Added Code:**

```
// Auto-load module routes
if (file_exists(__DIR__ . '/modules.php')) {
    require __DIR__ . '/modules.php';
}
```

#### Usage Examples

[](#usage-examples-3)

```
# Install modules loader into Laravel routing
php artisan install:modules-loader

# Force reinstall even if already present
php artisan install:modules-loader --force
```

#### Integration Process

[](#integration-process)

1. Checks if `routes/modules.php` exists
2. Scans `routes/web.php` for existing installation
3. Adds include statement if not present
4. Provides status feedback

---

### 🏗️ Module Directory Structure

[](#️-module-directory-structure)

After setting up the modular loader system:

```
routes/
├── web.php                 # Main Laravel routes (includes modules.php)
├── modules.php            # Auto-generated modules loader
└── modules/               # Your modular routes directory
    ├── products.php       # Product feature routes
    ├── users.php          # User feature routes
    ├── admin/             # Admin module subdirectory
    │   ├── dashboard.php  # Admin dashboard routes
    │   └── reports.php    # Admin reports routes
    └── api/               # API module subdirectory
        ├── v1.php         # API v1 routes
        └── v2.php         # API v2 routes
```

#### Route File Example

[](#route-file-example)

**`routes/modules/products.php`:**

```
