PHPackages                             campelo/laravel-make-full - 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. campelo/laravel-make-full

ActiveLibrary[Admin Panels](/categories/admin)

campelo/laravel-make-full
=========================

Generate complete CRUD structure: Model, Controller, Service, Repository, Resource, Requests, Policy, Migration, Factory, Seeder - all from a single command

v1.1.15(2mo ago)010MITPHPPHP ^8.1

Since Feb 13Pushed 2mo agoCompare

[ Source](https://github.com/campeloneto1/laravel-make-full)[ Packagist](https://packagist.org/packages/campelo/laravel-make-full)[ RSS](/packages/campelo-laravel-make-full/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (18)Used By (0)

Laravel Make Full
=================

[](#laravel-make-full)

Generate complete CRUD structure from a single command: Model, Controller, Service, Repository, Resource, Requests, Policy, Migration, Factory, Seeder.

Features
--------

[](#features)

- **Single Command** - Generate all files at once with `php artisan make:full`
- **Field Definition** - Define fields inline and auto-generate validations, migrations, factories
- **Smart Validation** - Generates proper validation rules based on field types
- **Search Built-in** - Service/Repository includes search with pagination
- **Customizable** - Publish stubs to customize generated code

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

[](#installation)

```
composer require campelo/laravel-make-full --dev
```

Publish config (optional):

```
php artisan vendor:publish --tag=make-full-config
```

Quick Start
-----------

[](#quick-start)

```
# Basic usage
php artisan make:full Post

# With fields
php artisan make:full Post --fields="title:string,content:text,published:boolean:default(false)"

# Full example
php artisan make:full BlogPost --fields="title:string,slug:string:unique,content:text:nullable,user_id:foreignId,published_at:datetime:nullable" --soft-deletes
```

Generated Files
---------------

[](#generated-files)

FilePathDescriptionModel`app/Models/Post.php`Eloquent model with fillable, casts, relationsController`app/Http/Controllers/PostController.php`API controller with CRUD methodsService`app/Services/PostService.php`Business logic with search/paginationRepository`app/Repositories/PostRepository.php`Data access layerResource`app/Http/Resources/PostResource.php`API resource transformerStoreRequest`app/Http/Requests/StorePostRequest.php`Validation for createUpdateRequest`app/Http/Requests/UpdatePostRequest.php`Validation for updatePolicy`app/Policies/PostPolicy.php`Authorization policyMigration`database/migrations/xxx_create_posts_table.php`Database migrationFactory`database/factories/PostFactory.php`Model factory with fakerSeeder`database/seeders/PostSeeder.php`Database seederRoutes`routes/api.php`API resource routes (appended)Field Definition Syntax
-----------------------

[](#field-definition-syntax)

```
field_name:type:modifier1:modifier2:...

```

### Supported Types

[](#supported-types)

TypeMigrationValidationFaker`string``string()``string|max:255``word()``text``text()``string``paragraph()``integer``integer()``integer``numberBetween()``boolean``boolean()``boolean``boolean()``date``date()``date``date()``datetime``dateTime()``date``dateTime()``decimal``decimal()``numeric``randomFloat()``json``json()``array``[]``foreignId``foreignId()``integer|exists:table,id``numberBetween()`### Modifiers

[](#modifiers)

ModifierEffect`nullable`Field is optional`unique`Adds unique constraint + validation`index`Adds database index`default(value)`Sets default value### Smart Field Detection

[](#smart-field-detection)

Field names automatically get appropriate faker methods:

- `*email*` → `safeEmail()`
- `*name*` → `name()`
- `*phone*` → `phoneNumber()`
- `*price*`, `*amount*` → `randomFloat(2, 10, 1000)`
- `*_id` → `numberBetween(1, 10)`
- `*title*` → `sentence(3)`
- `*description*`, `*content*` → `paragraph()`

Examples
--------

[](#examples)

### Blog Post

[](#blog-post)

```
php artisan make:full Post --fields="title:string,slug:string:unique,excerpt:text:nullable,content:text,user_id:foreignId,published_at:datetime:nullable,views:integer:default(0)" --soft-deletes
```

### Product

[](#product)

```
php artisan make:full Product --fields="name:string,sku:string:unique,description:text:nullable,price:decimal,stock:integer:default(0),category_id:foreignId,active:boolean:default(true)"
```

### User Profile

[](#user-profile)

```
php artisan make:full UserProfile --fields="user_id:foreignId:unique,bio:text:nullable,avatar:string:nullable,phone:string:nullable,birth_date:date:nullable"
```

Generated Code Examples
-----------------------

[](#generated-code-examples)

### Service with Search

[](#service-with-search)

```
public function search(array $params = []): LengthAwarePaginator
{
    $query = Post::query();

    // Search filter
    if (!empty($params['search'])) {
        $search = $params['search'];
        $query->where(function ($q) use ($search) {
            $q->where('title', 'like', "%{$search}%");
            $q->orWhere('content', 'like', "%{$search}%");
        });
    }

    // Sorting
    $sortField = $params['sort'] ?? 'created_at';
    $sortOrder = $params['order'] ?? 'desc';
    $query->orderBy($sortField, $sortOrder);

    // Pagination
    $limit = $params['limit'] ?? 15;

    return $query->paginate($limit);
}
```

### Controller

[](#controller)

```
public function index(Request $request): AnonymousResourceCollection
{
    $result = $this->service->search($request->all());

    return PostResource::collection($result);
}
```

### Update Request with Unique Validation

[](#update-request-with-unique-validation)

```
public function rules(): array
{
    return [
        'title' => 'sometimes|required|string|max:255',
        'slug' => [
            'sometimes',
            'required',
            'string|max:255',
            Rule::unique('posts', 'slug')->ignore($this->post?->id),
        ],
        'content' => 'sometimes|required|string',
    ];
}
```

Command Options
---------------

[](#command-options)

```
php artisan make:full {name}
    --fields=           # Field definitions
    --no-model          # Skip model
    --no-controller     # Skip controller
    --no-service        # Skip service
    --no-repository     # Skip repository
    --no-resource       # Skip resource
    --no-requests       # Skip requests
    --no-policy         # Skip policy
    --no-migration      # Skip migration
    --no-factory        # Skip factory
    --no-seeder         # Skip seeder
    --no-routes         # Skip routes
    --soft-deletes      # Add soft deletes
    --uuid              # Use UUID primary key
    --web               # Generate web controller (default is API)
    --force             # Overwrite existing files
```

Configuration
-------------

[](#configuration)

```
// config/make-full.php

return [
    // Namespaces
    'namespaces' => [
        'model' => 'App\\Models',
        'controller' => 'App\\Http\\Controllers',
        'service' => 'App\\Services',
        'repository' => 'App\\Repositories',
        // ...
    ],

    // Use repository pattern (Controller -> Service -> Repository)
    'use_repository' => true,

    // Default pagination
    'default_pagination' => 15,

    // Auto-add routes to api.php
    'add_routes' => true,
];
```

Customizing Stubs
-----------------

[](#customizing-stubs)

Publish stubs to customize generated code:

```
php artisan vendor:publish --tag=make-full-stubs
```

Stubs will be published to `stubs/make-full/`.

License
-------

[](#license)

MIT

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance82

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

17

Last Release

89d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9f3acde28c4144b8432fbcd2fbaeaeb877c63519b556724f7f4d920842a9eb81?d=identicon)[campeloneto1](/maintainers/campeloneto1)

---

Top Contributors

[![campeloneto1](https://avatars.githubusercontent.com/u/58265757?v=4)](https://github.com/campeloneto1 "campeloneto1 (16 commits)")

---

Tags

laravelscaffoldinggeneratorartisancrudmake

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/campelo-laravel-make-full/health.svg)

```
[![Health](https://phpackages.com/badges/campelo-laravel-make-full/health.svg)](https://phpackages.com/packages/campelo-laravel-make-full)
```

###  Alternatives

[brackets/admin-generator

Laravel 8 CRUD generator for brackets/craftable

50190.9k](/packages/brackets-admin-generator)

PHPackages © 2026

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