sndpbag / crud-generator
A powerful Laravel CRUD generator package with advanced features
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/sndpbag/crud-generator
Requires
- php: ^8.1
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
"# CRUD Generator"
đ Laravel CRUD Generator
Generate complete Laravel CRUD in seconds with a single command!
Features âĸ Installation âĸ Quick Start âĸ Documentation âĸ Contributing
đ¯ Why This Package?
Stop wasting time writing repetitive CRUD code! This package generates:
- â Model with relationships
- â Migration with all field types
- â Controller with complete CRUD logic
- â Form Request validation classes
- â Beautiful responsive views (Bootstrap/Tailwind)
- â Automatic route registration
- â Feature tests
- â And much more...
All in just 5 seconds! âĄ
⨠Features
đĻ Installation
composer require sndpbag/crud-generator
That's it! No configuration needed. Start generating CRUDs immediately.
đ Quick Start
Basic Example
php artisan make:crud Product --fields="name:string,price:integer,description:text"
Generated files in 5 seconds:
- â
app/Models/Product.php - â
database/migrations/..._create_products_table.php - â
app/Http/Controllers/ProductController.php - â
app/Http/Requests/StoreProductRequest.php - â
app/Http/Requests/UpdateProductRequest.php - â
resources/views/products/*.blade.php - â
Routes in
routes/web.php
Run migration and you're done:
php artisan migrate
Visit: http://localhost/products đ
đĄ Advanced Usage
E-commerce Product CRUD
php artisan make:crud Product \
--fields="name:string:unique,slug:string:unique,price:decimal:default(0),stock:integer,image:image:nullable,status:enum(active,inactive):default('active'),is_featured:boolean:default(0)" \
--belongsTo=Category \
--belongsTo=Brand \
--softdelete \
--auth \
--tests
Admin Panel
php artisan make:crud Admin/Post \
--fields="title:string:unique,content:text,featured_image:image:nullable" \
--belongsTo=User \
--belongsTo=Category \
--auth
API Endpoints
php artisan make:crud Product --fields="name:string,price:integer" --api
đ§ āĻāĻŽā§āϞ āύā§āĻāĻŋāĻĢāĻŋāĻā§āĻļāύ āϏāĻš CRUD
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻžāύ āϝ⧠āύāϤā§āύ āĻā§āύ⧠āĻĄā§āĻāĻž āϤā§āϰāĻŋ (create) āĻšāĻā§āĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻŽā§āϞ āύā§āĻāĻŋāĻĢāĻŋāĻā§āĻļāύ āĻĒāĻžāĻ āĻžāύ⧠āĻšā§āĻ, āϤāĻŦā§ --email āĻĢā§āϞā§āϝāĻžāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
php artisan make:crud Order --fields="item_name:string,price:integer" --belongsTo=User --email āĻāĻāĻŋ āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻŦā§: â app/Mail/OrderCreatedMailable.php (ShouldQueue āϏāĻš) â app/Jobs/SendOrderCreatedEmailJob.php â resources/views/emails/order.blade.php (Markdown āĻā§āĻŽāĻĒā§āϞā§āĻ) â OrderController-āĻāϰ store āĻŽā§āĻĨāĻĄā§ āĻāĻŦ āĻĄāĻŋāϏāĻĒā§āϝāĻžāĻ āĻāϰāĻžāϰ āĻā§āĻĄāĨ¤ --- ## đ¨ Field Types | Type | HTML | Example | |------|------|---------| | string | `<input type="text">` | `name:string` | | text | `<textarea>` | `description:text` | | integer | `<input type="number">` | `age:integer` | | decimal | `<input type="number">` | `price:decimal` | | boolean | `<input type="checkbox">` | `is_active:boolean` | | date | `<input type="date">` | `birth_date:date` | | datetime | `<input type="datetime-local">` | `published_at:datetime` | | email | `<input type="email">` | `email:email` | | file | `<input type="file">` | `document:file` | | image | `<input type="file" accept="image/*">` | `photo:image` | | enum | `<select>` | `status:enum(active,inactive)` | --- ## đ§ Modifiers ```bash # Nullable field --fields="description:text:nullable" # Unique constraint --fields="email:email:unique" # Default value --fields="status:enum(active,inactive):default('active')" # Combine modifiers --fields="slug:string:unique:nullable"
đ Relationships
# BelongsTo (generates dropdown in forms) --belongsTo=User --belongsTo=Category # HasMany --hasMany=Comment --hasMany=Review
đ¯ Command Flags
| Flag | Description | Example |
|---|---|---|
--fields |
Define fields | --fields="name:string,price:integer" |
--belongsTo |
Add belongsTo relationship | --belongsTo=User |
--hasMany |
Add hasMany relationship | --hasMany=Comment |
--softdelete |
Enable soft deletes | --softdelete |
--auth |
Add auth middleware | --auth |
--api |
Generate API instead of web | --api |
--tests |
Generate PHPUnit tests | --tests |
--pest |
Generate Pest tests | --pest |
--email |
āύāϤā§āύ āϰā§āĻāϰā§āĻĄ āϤā§āϰāĻŋ āĻšāϞ⧠āĻāĻŽā§āϞ āĻĒāĻžāĻ āĻžāύā§āϰ āĻāύā§āϝ Mailable āĻ Job āϤā§āϰāĻŋ āĻāϰ⧠| --email |
đī¸ Rollback
Delete all generated files:
php artisan crud:delete Product
đ Documentation
- đ Complete Documentation
- ⥠Quick Start Guide
- đ§ Installation Guide
- đĄ Real-World Examples
- đ¤ Contributing Guidelines
đĨ Video Tutorial
Coming soon! Subscribe to our YouTube channel.
đ Comparison
| Feature | Manual Coding | This Package |
|---|---|---|
| Time Required | ~2 hours | 5 seconds |
| Model | â Manual | â Auto |
| Migration | â Manual | â Auto |
| Controller | â Manual | â Auto |
| Validation | â Manual | â Auto |
| Views | â Manual | â Auto |
| Routes | â Manual | â Auto |
| Tests | â Manual | â Auto |
| File Uploads | â Manual | â Auto |
| Relationships | â Manual | â Auto |
đ Real-World Examples
Blog System
php artisan make:crud Post --fields="title:string:unique,content:text,status:enum(draft,published)" --belongsTo=User --hasMany=Comment --softdelete --auth --tests
Inventory Management
php artisan make:crud Product --fields="sku:string:unique,name:string,stock:integer,price:decimal" --belongsTo=Category --belongsTo=Supplier --auth
Booking System
php artisan make:crud Appointment --fields="appointment_date:datetime,status:enum(pending,confirmed,cancelled)" --belongsTo=User --belongsTo=Service --auth
See more in EXAMPLES.md
âī¸ Configuration
Publish config file:
php artisan vendor:publish --tag=crud-generator-config
Customize in config/crud-generator.php:
return [ 'template' => 'bootstrap', // or 'tailwind' 'storage_path' => 'public/uploads', 'pagination' => 10, 'alert_library' => 'sweetalert2', ]; āĻāĻĒāύāĻŋ `config/crud-generator.php` āĻĢāĻžāĻāϞ⧠āĻĄāĻŋāĻĢāϞā§āĻ āĻā§āϝāĻžāϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻĒā§āϰāĻĨāĻŽā§ āĻāύāĻĢāĻŋāĻ āĻĢāĻžāĻāϞāĻāĻŋ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻāϰā§āύ: ```bash php artisan vendor:publish --tag=crud-generator-config đ§ āĻāĻŽā§āϞ āύā§āĻāĻŋāĻĢāĻŋāĻā§āĻļāύ āϏā§āĻāĻāĻĒ (Email Notification Setup) --email āĻĢā§āϞā§āϝāĻžāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāĻā§ āĻĻā§āĻāĻŋ āĻāĻŋāύāĻŋāϏ āϏā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§: ā§§. āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻāĻŽā§āϞ āϏā§āĻ āĻāϰā§āύ: JobGenerator āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§ āĻŽāĻĄā§āϞ⧠email āĻĢāĻŋāϞā§āĻĄ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āύāĻž āĻĒāĻžā§, āϤāĻŦā§ āĻāĻāĻŋ config/crud-generator.php āĻĢāĻžāĻāϞ⧠āĻĨāĻžāĻāĻž admin_email āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻāĻĒāύāĻžāϰ .env āĻĢāĻžāĻāϞ⧠āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻāĻŽā§āϞ āϝā§āĻ āĻāϰā§āύ: ADMIN_EMAIL="your_admin_email@example.com" ⧍. Queue Worker āĻāĻžāϞ⧠āĻāϰā§āύ: āĻāĻŽā§āϞāĻā§āϞ⧠āϝā§āύ āĻāĻāĻāĻžāϰ āĻāĻā§āϏāĻĒā§āϰāĻŋā§ā§āύā§āϏ āύāώā§āĻ āύāĻž āĻāϰā§, āϏā§āĻāύā§āϝ āĻāĻā§āϞ⧠Queue-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒāĻžāĻ āĻžāύ⧠āĻšā§ (ShouldQueue)āĨ¤ āϤāĻžāĻ āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ Queue Worker āĻāĻžāϞ⧠āϰāĻžāĻāϤ⧠āĻšāĻŦā§: php artisan queue:work
đ¨ Customize Templates
Publish stubs:
php artisan vendor:publish --tag=crud-generator-stubs
Edit files in stubs/crud-generator/ to customize generated code.
đ§Ē Testing
Run package tests:
composer test
Generate tests for your CRUD:
php artisan make:crud Product --fields="name:string" --tests php artisan test
đ¤ Contributing
We love contributions! Please read our Contributing Guide.
Contributors
đ Changelog
See CHANGELOG.md for all changes.
đ Issues
Found a bug? Open an issue
đŦ Discussions
Have questions? Start a discussion
â Star History
đ License
The MIT License (MIT). See LICENSE for details.
đ Support
If you find this package helpful, please consider:
- â Starring the repository
- đ Reporting bugs
- đĄ Suggesting features
- đ Improving documentation
- â Buy me a coffee
đ Acknowledgments
- Laravel Community
- All Contributors
- Open Source Community
Made with â¤ī¸ for the Laravel Community
Built by sandipan kr bag