PHPackages                             shehroz/crud-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. [Framework](/categories/framework)
4. /
5. shehroz/crud-generator

ActiveLibrary[Framework](/categories/framework)

shehroz/crud-generator
======================

Laravel package to generate full CRUD (controllers, models, requests, repositories, policies, migrations, seeders, and Tailwind views) with repository pattern, role-based policies, and optional API routes.

532PHP

Since Jun 27Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/shehroz9712/CrudGenerator)[ Packagist](https://packagist.org/packages/shehroz/crud-generator)[ RSS](/packages/shehroz-crud-generator/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Shehroz CRUD Generator
======================

[](#shehroz-crud-generator)

A Laravel package that generates production-ready CRUD modules for **Admin Panel** and **API** with policies, permissions, repositories, and a dynamic admin menu system.

Compatible with **PHP 8.1+** and **Laravel 9–12**.

Features
--------

[](#features)

- Admin panel CRUD (controller, views, search/filter, pagination, status, soft deletes)
- API CRUD (controller, API resources, consistent JSON responses)
- Policy and permission keys (`module.view`, `module.create`, `module.edit`, `module.delete`)
- Dynamic admin sidebar menu registration
- Repository pattern with interface binding
- Publishable stubs and config for full customization
- Nested namespaces (e.g. `admin/user`)

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

[](#installation)

```
composer require shehroz/crud-generator
```

Publish configuration and admin menu (recommended):

```
php artisan vendor:publish --tag=crud-generator-config
php artisan vendor:publish --tag=crud-generator-admin-menu
```

Publish stubs to customize templates (optional):

```
php artisan vendor:publish --tag=crud-generator-stubs
```

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

[](#quick-start)

### Admin + API with policy and menu

[](#admin--api-with-policy-and-menu)

```
php artisan make:crud User \
  --fields="name:string,email:string:unique,phone:string:nullable" \
  --admin --api --policy --menu --status --soft-delete
```

### Admin only

[](#admin-only)

```
php artisan make:crud admin/Category \
  --fields="title:string,description:text:nullable" \
  --admin --menu --icon="fas fa-tags"
```

### API only

[](#api-only)

```
php artisan make:crud Product \
  --fields="name:string,price:decimal,stock:integer" \
  --api --policy
```

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

[](#command-options)

OptionDescription`name`Model name (`User` or `Admin/User`)`--fields=`Comma-separated fields: `name:type:modifiers``--admin` / `--web`Generate admin panel CRUD`--api`Generate API CRUD`--both`Generate admin + API`--policy`Generate policy (default: enabled)`--no-policy`Skip policy generation`--menu`Register admin menu item (default with admin)`--no-menu`Skip menu registration`--soft-delete`Enable soft deletes`--status`Add active/inactive status field`--seeder`Generate model seeder`--searchable=`Searchable fields (comma-separated)`--sortable=`Sortable fields (comma-separated)`--icon=`Menu icon class (Font Awesome, etc.)`--menu-label=`Custom menu label`--menu-order=`Menu sort order (default: 100)`--menu-parent=`Parent menu key for nested menus`--routes`Auto-append routes to route files### Field format

[](#field-format)

```
fieldName:type:modifiers

```

**Types:** `string`, `text`, `integer`, `boolean`, `decimal`, `date`, `datetime`, `json`

**Modifiers:** `nullable`, `unique`

**Example:**

```
--fields="title:string,body:text:nullable,email:string:unique,published:boolean"
```

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

[](#generated-files)

ComponentPathModel`app/Models/[Namespace]/Model.php`Migration`database/migrations/*_create_*_table.php`Admin Controller`app/Http/Controllers/[Namespace]/ModelController.php`API Controller`app/Http/Controllers/Api/[Namespace]/ModelController.php`API Resource`app/Http/Resources/[Namespace]/ModelResource.php`Store/Update Requests`app/Http/Requests/[Namespace]/`Repository + Interface`app/Repositories/`Policy`app/Policies/[Namespace]/ModelPolicy.php`Views`resources/views/[namespace]/[table]/`Seeder`database/seeders/ModelSeeder.php` (with `--seeder`)Admin Menu System
-----------------

[](#admin-menu-system)

After publishing the admin menu package:

```
php artisan vendor:publish --tag=crud-generator-admin-menu
```

Register menu items in `config/admin-menu.php` or at runtime:

```
use Shehroz\CrudGenerator\Support\AdminMenu;

AdminMenu::add([
    'label' => 'Users',
    'icon' => 'fas fa-users',
    'route' => 'admin.users.index',
    'permission' => 'users.view',
    'order' => 10,
]);
```

Include the sidebar in your admin layout:

```

{{-- or --}}
@include('components.admin-sidebar')
```

When you run `make:crud` with `--menu`, a menu entry is automatically appended to `config/admin-menu.php`.

### Nested menus

[](#nested-menus)

```
AdminMenu::add([
    'key' => 'catalog',
    'label' => 'Catalog',
    'icon' => 'fas fa-box',
    'order' => 20,
]);

AdminMenu::add([
    'label' => 'Products',
    'icon' => 'fas fa-tag',
    'route' => 'admin.products.index',
    'permission' => 'products.view',
    'parent' => 'catalog',
    'order' => 1,
]);
```

API Response Format
-------------------

[](#api-response-format)

Generated API controllers return a consistent JSON structure:

```
{
  "success": true,
  "message": "Data fetched successfully",
  "data": {},
  "meta": {
    "current_page": 1,
    "last_page": 5,
    "per_page": 15,
    "total": 72
  }
}
```

Validation errors follow Laravel's standard `422` response format via Form Requests.

Permissions
-----------

[](#permissions)

Each generated module creates these permission keys:

- `{module}.view`
- `{module}.create`
- `{module}.edit`
- `{module}.delete`

Example for `User` model: `users.view`, `users.create`, `users.edit`, `users.delete`

Policies are auto-registered in `AuthServiceProvider` when possible. Permission keys are appended to `PermissionSeeder` (requires [spatie/laravel-permission](https://github.com/spatie/laravel-permission) in your host app).

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

[](#configuration)

Publish and edit `config/crud-generator.php`:

```
'admin' => [
    'layout' => 'layouts.admin',
    'route_prefix' => 'admin',
    'route_name_prefix' => 'admin.',
    'middleware' => ['web', 'auth'],
],

'api' => [
    'prefix' => 'api/v1',
    'middleware' => ['api', 'auth:sanctum'],
],

'routes' => [
    'auto_append' => false, // set true or use --routes flag
],
```

Host App Requirements
---------------------

[](#host-app-requirements)

Your Laravel application should provide:

1. **Admin layout** — `resources/views/layouts/admin.blade.php` (or change `admin.layout` in config)
2. **Authentication** — for admin middleware and policy checks
3. **Spatie Permission** (recommended) — for `{module}.*` permission keys
4. **API auth** — Sanctum or adjust `api.middleware` in config

Architecture
------------

[](#architecture)

```
make:crud (Command)
    └── CrudGeneratorService
            ├── NameParser / FieldParser
            ├── StubRenderer
            └── Generators
                    ├── ModelGenerator
                    ├── MigrationGenerator
                    ├── RequestGenerator
                    ├── RepositoryGenerator
                    ├── PolicyGenerator
                    ├── AdminControllerGenerator
                    ├── ApiControllerGenerator
                    ├── ApiResourceGenerator
                    ├── ViewGenerator
                    ├── RouteGenerator
                    ├── MenuGenerator
                    └── SeederGenerator

```

Backward Compatibility
----------------------

[](#backward-compatibility)

- `--web` remains an alias for `--admin`
- Existing output paths are preserved
- Stubs can be published and customized without modifying the package

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

Author
------

[](#author)

Muhammad Shehroz — [LinkedIn](https://www.linkedin.com/in/muhammadshehroz97/)

###  Health Score

23

—

LowBetter than 25% of packages

Maintenance59

Moderate activity, may be stable

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/104579929?v=4)[shehrozdev](/maintainers/shehrozdev)[@Shehrozdev](https://github.com/Shehrozdev)

---

Top Contributors

[![shehroz9712](https://avatars.githubusercontent.com/u/78542541?v=4)](https://github.com/shehroz9712 "shehroz9712 (26 commits)")

### Embed Badge

![Health badge](/badges/shehroz-crud-generator/health.svg)

```
[![Health](https://phpackages.com/badges/shehroz-crud-generator/health.svg)](https://phpackages.com/packages/shehroz-crud-generator)
```

###  Alternatives

[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[sergebezborodov/beanstalk-yii2

Beanstalk component for Yii Framework 2

201.2k](/packages/sergebezborodov-beanstalk-yii2)

PHPackages © 2026

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