mr.incognito / crudify
This package is for handling the crud for simple crud like for setup etc.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:laravel-package
Requires
- php: ^8.1|^8.2|^8.3|^8.4
- illuminate/console: ^10.0|^11.0|^12.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/filesystem: ^10.0|^11.0|^12.0
- illuminate/routing: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- illuminate/validation: ^10.0|^11.0||^12.0
Requires (Dev)
- laravel/pint: ^1.20
- orchestra/testbench: ^8.0 || ^9.0 ||^10.0
- pestphp/pest: ^2.0||^3.0
- pestphp/pest-plugin-laravel: ^2.4
- rector/rector-laravel: ^2.0
- roave/security-advisories: dev-latest
README
A Laravel package to quickly scaffold API or Web-based CRUD operations using a simple Artisan command. It generates Models, Migrations, Form Requests, API Resources, Controllers, and even Blade views — with full support for validation, foreign keys, nullable fields, and default values.
Installation
To install the package, run:
composer require mr.incognito/crudify
✨ Features
- ✅ Generates Model, Migration, Controller, Request, and Resource
- ✅ Supports Web (with Blade views) or API type generation
- ✅ Handles nullable fields (using
~
as a suffix) - ✅ Supports foreign key constraints
- ✅ Adds default values to migration fields
- ✅ Type-aware validation rules (e.g.,
string
,integer
,boolean
) - ✅ Artisan-based generation: fast and developer-friendly
- ✅ --type flag to specific crud type api or web based( with default is api)
- ✅ --exclude flag to skip generating specific files
- ✅ Built-in Pest tests
- ✅ Code refactoring via Rector
🚀 Usage
php artisan make:crud ModelName --fields="field:type|rule1|rule2;another:foreign~|constrained:table" --type=api|web --exclude=model,..
Example 1:
To create crud without foreignKey
php artisan make:crud Department --fields="name:string|max:255;created_by:foreign~|constrained:users"
Example 2:
To create crud with required foreignKey column and with constrained
php artisan make:crud Department --fields="name:string;created_by:foreign|constrained:users|onDelete:cascade"
Example 3:
To create crud with nullable foreignKey column
php artisan make:crud Department --fields="name:string;created_by:foreign~|constrained:hospitals"
Example 4:
To create crud with default value column
php artisan make:crud Department --fields="name:string;status:boolean~|default:true"
These all will Generate
-
app/Models/Department.php
-
app/Http/Controllers/DepartmentController.php
-
app/Http/Requests/DepartmentRequest.php
-
app/Http/Resources/DepartmentResource.php
-
database/migrations/xxxx_xx_xx_create_departments_table.php
-
Adds route in routes/api.php
Example 6:
Exclude Model and Migration
php artisan make:crud Department --fields="name:string" --type=api --exclude=model,migration
Skips model and migration, still creates controller, request, and resource.
Field Syntax
Each field uses the format:
column_one_name:data_type[~]|rules|default:xyz;column_two_name:foreignId[~]|constrained:table
Supported Field Types
You can use any of the following Laravel migration column types:
string, text, boolean, integer, decimal, date, uuid, json, timestamp, etc.
Foreign key via foreign, e.g., user_id:foreign~|constrained:users
Nullable fields: suffix type with ~
, e.g., email:string~
Default values: default:value, e.g., status:boolean|default:true
column Modifiers
~ :
Makes the field nullabledefault:value :
Sets a default value in the migrationconstrained :
Adds a foreign key constraintonDelete:CASCADE :
Adds delete behavior for foreign keys
🆕 New in v2
🎯 --type=api
: generates API controller and resource only
🎯 --type=web
: generates web controller and Blade views
✂️ --exclude
=model,migration,request,route,views,resource,controller: skip generating specific components
⚠️ Default Behavior
If --type
is not specified, the command defaults to type=api.
php artisan make:crud Book --fields="title:string;author:string"
This is equivalent to:
php artisan make:crud Book --fields="title:string;author:string" --type=api
By default, it generates API-related files:
-
API Controller
-
API Resource
-
Form Request
-
Model
-
Migration
-
Adds route to api.php
Example 5:
Web CRUD with Blade Views
php artisan make:crud Article --fields="title:string;content:text" --type=web
Generates:
- Model, Migration
- Blade Views: resources/views/articles/*.blade.php
- Web\ArticleController
- Route in web.php
Example 5:
Web CRUD with Blade Views
php artisan make:crud Article --fields="title:string;content:text" --type=web --exclude=migration,model
Generates only:
- Blade Views: resources/views/articles/*.blade.php
- Web\ArticleController
- Route in web.php
Testing
This package uses Pest for testing:
composer test
Refactoring
This package uses Rector for automated code refactoring and PHP/Laravel upgrades:
composer rector
🛠 Dev Requirements
-
PHP ^8.1
-
Laravel ^10 or ^11 or ^12
-
PestPHP for testing
-
Laravel pint for code style fixer
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
🧑 Author
Sandeep Pant
License
This package is open-sourced software licensed under the MIT License.