Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Crudify Laravel Package

mr.incognito/crudify

Laravel package to scaffold API or web CRUD via Artisan. Generates models, migrations, controllers, form requests, resources, and optional Blade views. Supports typed validation, nullable fields (~), foreign keys/constraints, defaults, exclude flags, and a delete:crud cleanup command.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Rapid Prototyping for Internal Tools: Accelerates development of admin panels, configuration dashboards, or setup wizards by automating 80% of CRUD boilerplate. Example: Launching a "Department Management" tool in hours instead of days.
  • API-First Development: Enables quick scaffolding of RESTful endpoints for internal services, third-party integrations, or microservices. Ideal for teams adopting Laravel as an API backend.
  • Standardization of Boilerplate: Reduces technical debt by enforcing consistent patterns (e.g., form requests, API resources, validation) across the codebase. Mitigates risks of ad-hoc scaffolding scripts.
  • Build vs. Buy Decision: Justifies avoiding custom CRUD solutions (e.g., hand-written controllers) when the package meets core needs, saving development time and resources.
  • Onboarding Junior Developers: Serves as a "cheat sheet" for Laravel best practices, reducing ramp-up time for new hires by providing pre-configured, validated templates.
  • Tech Debt Mitigation: Replaces copy-pasted or manually generated CRUD code with a maintainable, version-controlled solution. The delete:crud command further reduces clutter.
  • Modular Architecture: Supports incremental development by allowing teams to generate only the components they need (e.g., --exclude=model,migration) and extend later.
  • Low-Risk Experimentation: Enables safe exploration of new features (e.g., "What if we add a 'User Roles' panel?") without committing to custom development upfront.

When to Consider This Package

  • Adopt if:

    • Your team frequently builds simple CRUD interfaces (e.g., admin panels, internal tools, configuration screens) where speed and consistency matter more than customization.
    • You’re using Laravel 10+ and want to leverage its ecosystem (e.g., API resources, form requests) without reinventing the wheel.
    • Your project requires rapid iteration (e.g., startups, MVPs, or internal tools) where boilerplate code slows down development.
    • You prioritize developer productivity over long-term maintainability for low-risk components (e.g., non-customer-facing tools).
    • Your stack includes Blade templates or API-first Laravel applications where the package’s output aligns with your architecture.
    • You need a scalable way to onboard junior developers to Laravel’s conventions (e.g., validation, migrations, controllers).
  • Look Elsewhere if:

    • Your CRUD requires complex business logic (e.g., multi-step workflows, custom authorization, or event-driven processes). This package generates basic CRUD; extensions will be needed.
    • You’re building public-facing products with unique UX requirements (e.g., e-commerce, social media) where custom UI/UX is critical.
    • Your team prefers framework-agnostic solutions (e.g., Next.js + Laravel API) or uses non-standard Laravel setups (e.g., custom ORMs, monolithic apps).
    • You need advanced features like bulk actions, soft deletes with custom logic, or real-time updates (e.g., WebSockets, Livewire integration).
    • Your project uses non-Laravel frontends (e.g., React/Vue with GraphQL) where the package’s Blade/API coupling is limiting.
    • You prioritize long-term maintainability over speed and the generated code lacks extensibility points (e.g., no hooks for middleware or service providers).
    • You’re working with legacy systems where the package’s assumptions (e.g., Eloquent models, Laravel conventions) don’t align with existing code.

How to Pitch It (Stakeholders)

For Executives/Product Owners:

*"This package is a force multiplier for Laravel development teams. It lets us build basic data management tools—like admin panels, setup wizards, or internal dashboards—in a fraction of the time. For example:

  • Time Savings: Generating a CRUD for a ‘Department Management’ tool takes minutes instead of hours, letting teams focus on business logic.
  • Consistency: Ensures all CRUD operations follow Laravel best practices, reducing bugs and technical debt.
  • Flexibility: Works for both APIs (for integrations) and web interfaces (for internal tools).

Ask to Approve:

  • Pilot the package for one internal tool (e.g., a content moderation panel) to measure time savings.
  • Allocate budget for customizing templates (e.g., branding, additional validation) if needed.
  • Treat it as a standard tool for 80% of CRUD needs, freeing engineers to innovate on the 20% that matters."*

For Engineering Teams:

*"This solves the ‘I need a quick CRUD’ problem without sacrificing quality. Here’s how we’ll use it:

  • APIs: Generate REST endpoints for internal services (e.g., php artisan make:crud User --type=api).
  • Admin Panels: Scaffold Blade-based CRUDs for low-risk tools (e.g., php artisan make:crud Product --type=web).
  • Prototyping: Test ideas faster by auto-generating models, migrations, and validation.

Why It’s Great: ✅ Speed: No more writing migrations, controllers, or form requests from scratch. ✅ Consistency: Enforces Laravel best practices (e.g., form requests, API resources). ✅ Extensible: Exclude files (e.g., --exclude=model) or tweak templates later.

Limitations: ⚠ Not for complex logic: If you need custom authorization or workflows, extend the generated code. ⚠ Blade focus: Web CRUDs use Blade; pair with Alpine.js or Inertia if you need reactivity.

Next Steps:

  1. Try generating a throwaway CRUD (e.g., php artisan make:crud Test --fields="name:string").
  2. Compare output to our current scaffolding process—where does it save time?
  3. Decide if we need to customize templates (e.g., add our base layout) or use it as-is.

Ask For:

  • 1–2 devs to test in a sandbox environment.
  • Approval to document the workflow (e.g., ‘When to use this vs. hand-coding’)."*

For Technical Leads/Architects:

*"This package reduces cognitive load by automating repetitive Laravel patterns. Here’s the technical breakdown:

  • Architecture Fit: Works seamlessly with Laravel’s ecosystem (Eloquent, API Resources, Form Requests).
  • Performance: Generates optimized code (e.g., type-aware validation, foreign key constraints).
  • Maintainability: The delete:crud command cleans up generated files, reducing clutter.
  • Extensibility: Supports partial generation (e.g., --exclude=model) and customization via Rector or manual overrides.

Risks to Mitigate:

  • Over-Reliance: Avoid using this for highly customized or business-critical CRUD.
  • Template Lock-In: If we customize Blade templates, ensure they’re version-controlled and easy to update.
  • Testing: The package includes Pest tests, but we should validate generated code in our CI pipeline.

Recommendation:

  • Start with non-customer-facing tools (e.g., admin panels, internal APIs).
  • Document extension points (e.g., how to add custom middleware to generated controllers).
  • Monitor generated code quality and refine templates as needed."*

For Developers:

*"This is your new best friend for boring CRUD. Here’s how to use it:

  1. Install: composer require mr.incognito/crudify
  2. Generate API CRUD:
    php artisan make:crud User --fields="name:string|max:255;email:string|email;role:foreign~|constrained:roles"
    
    • Creates: Model, Migration, Controller, Request, Resource, and API route.
  3. Generate Web CRUD:
    php artisan make:crud Article --fields="title:string;content:text" --type=web
    
    • Creates: Model, Migration, Blade views, Web Controller, and route.
  4. Clean Up:
    php artisan delete:crud User --force
    

Pro Tips:

  • Use --exclude=model if you already have a model.
  • Add default:value to fields (e.g., status:boolean~|default:true).
  • For foreign keys, use foreign|constrained:table (e.g., user_id:foreign|constrained:users).

When to Avoid:

  • If you need custom logic in controllers (extend the generated code).
  • If your UI is highly dynamic (e.g., real-time updates)."*
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui