Weave 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

Laracrud Laravel Package

digitaldream/laracrud

DigitalDream Laracrud is a Laravel CRUD generator that scaffolds models, controllers, views, routes, and migrations from database tables or config. It speeds up admin panel and backend development with customizable templates and support for common field types.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Laracrud is a database-first scaffolder, not a runtime library. It introspects an existing schema and emits Eloquent models (with properties/methods), FormRequest classes with inferred rules, controllers, routes derived from controller method signatures, and Blade forms with validation error rendering. As a TPM, evaluate it as a one-time productivity lever for the first 20–40% of an application, not as an architectural component.

  • Fits well: internal admin/back-office tools, legacy-schema front-ends ("well structured database, no app"), migration off Access/Excel/PHP-legacy onto Laravel, prototype-to-MVP timelines, monoliths using Blade + Bootstrap where generated conventions match house style.
  • Fits poorly: API-first/headless products, Inertia/Livewire/SPA front-ends, DDD or hexagonal codebases, event-driven or multi-tenant apps with per-tenant connections, teams with an existing generator (Blueprint, InfyOm, Filament) or strict code-review conventions. Generated controllers/routes with signature-derived routing are the opposite of explicit, reviewable routing.
  • Architectural footprint is the committed output, so the real question is "do we accept this generator's conventions as our conventions?" If the answer is no, the value collapses to a one-time bootstrap.

Integration feasibility. Low-friction install (composer require --dev), single artisan command, run against a live DB connection. Feasibility gates are all environment-shaped, not design-shaped:

  • Framework compatibility is the gating unknown. Schema introspection historically leaned on doctrine/dbal, which Laravel 11 removed from core; generators in this class commonly break on Laravel 10/11/12 and PHP 8.2+. The 2024-12-17 release is recent enough to be plausible on Laravel 10/11, but this must be proven, not assumed.
  • Auth/authorization is out of scope, so it composes with Breeze/Jetstream or a hand-rolled guard — but that means the generated layer is only the CRUD shell; policies, tenancy, auditing, and soft-delete semantics are yours.
  • Blast radius is controllable because it is a dev-time tool: it can be removed from require after generation, so supply-chain exposure is limited to the generation window.

Technical risk.

Risk Severity Notes
Archived upstream High No CVE response, no Laravel 12 path, no bug fixes. MIT permits an internal fork; budget for it or accept a pinned, frozen tool.
Heuristic inference errors High Column types → validation rules, FK → relationships, nullable → nullable (often too permissive) are guesses. Silent wrongness in validation and mass-assignment is a security-adjacent defect class.
Generated code is unowned code High Team treats it as "the tool's code," stops reviewing it, and it calcifies. Mitigate with an explicit ownership rule: generated output is first-party code from commit one.
Re-run / overwrite behavior Medium Verify whether regeneration overwrites hand edits; if yes, generation must be a one-shot or sandbox-only operation.
Ecosystem signal Medium 331 stars, 0 dependents, single maintainer, score 2.40 — thin community, no third-party validation, no forks-of-record. Opportunity score 3.97 suggests the category is underserved, not that this artifact is healthy.

Key questions to answer before commitment.

  1. Which Laravel/PHP versions are actually supported — does it work on our target (LTS) version, and does it require doctrine/dbal?
  2. Web/Blade only, or API/resource generation too? (Determines whether it's usable for our surface area at all.)
  3. Does it detect relationships from foreign keys, and how does it handle enums, JSON, geometry, composite keys, and unsigned bigint PKs?
  4. Does regeneration overwrite existing files? Is there a --force/dry-run/diff mode?
  5. Are stubs publishable so we can enforce house conventions (PSR-12, strict types, pagination, policies) rather than fighting the defaults?
  6. Multi-connection / non-public schema support?
  7. What does the generated validation actually assert — is required inferred from NOT NULL, and are unique/foreign-key rules emitted?
  8. Who owns the fork if we need one, and what is the trigger (Laravel major upgrade) that forces the decision?

Integration Approach

Stack fit. Assumes a conventional LAMP/LEMP Laravel monolith: MySQL/PostgreSQL, Blade + Bootstrap-flavored markup, session auth, server-rendered forms. It is a poor fit for anything token/API-first or component-driven. Pair it with an auth starter kit and your own policy layer; expect to write authorization, pagination, search/filtering, and audit logging by hand regardless.

Migration path. The correct posture is generate once, own forever, then uninstall. Recommended sequence:

  1. Spike (1–2 days, throwaway branch). Install as --dev, point at a schema snapshot, generate. Score the output against a 10-point rubric: rule accuracy, relationship correctness, route sanity, form usability, code style, overwrite behavior, Laravel-version compatibility.
  2. Fork decision. If the spike passes but the package is version-locked out of our roadmap, fork under MIT into an internal namespace with a pinned Laravel constraint. Budget ~3–5 engineer-days/year for upkeep; kill the fork the moment a maintained alternative (Blueprint, Filament, InfyOm) covers the need.
  3. Constrained production run. Freeze the schema, generate into a feature branch, review every generated file as if hand-written, prune unused scaffolding, then commit. Remove the dev dependency from composer.json in the same PR so CI cannot silently regenerate.
  4. Hardening pass. Rewrite inferred validation rules against the real domain, replace $fillable/$guarded with explicit allowlists, add policies, add pagination and eager-loading, and convert generated routes to explicit Route::resource definitions.
  5. Convention lock-in. If the team wants to keep generating for future tables, promote to a fork with customized stubs and a CI check; otherwise declare it a one-time bootstrap and document that in the ADR.

Compatibility gates. Verify, don't assume: Laravel major version, PHP minor version, DB driver (MySQL 8 vs PostgreSQL vs SQL Server — introspection fidelity varies sharply), doctrine/dbal availability, and whether Composer's platform config lets it coexist with our other dev tooling (Pint, PHPStan, Pest).

Sequencing relative to the program. This is a Phase 0/Phase 1 accelerator, and it must land after the schema is stable and before the team writes CRUD by hand. It has near-zero value mid-project (the code already exists) and negative value pre-schema-freeze (regeneration churn). Effort profile: ~1 day spike, ~3–5 days to production-quality generated CRUD for a 10–20 table admin app, versus a rough 10–15 day hand-written baseline — meaningful but not transformative, and the delta shrinks fast as domain logic, auth, and UX work dominate.

Operational Impact

Maintenance. The dominant operational fact is archived. Expect zero upstream fixes, zero Laravel-major-upgrade support, and no security response. Two viable stances: (a) consume-and-discard — dev dependency removed post-generation, residual risk ≈ 0, upkeep ≈ 0; or (b) internal fork — 3–5 engineer-days/year, a named owner, and a standing item on the framework-upgrade checklist. Do not leave it as a live require-dev dependency with an unpinned constraint; that converts a dormant tool into a recurring CI failure.

Support. No vendor, no SLA, thin community (331 stars, 0 dependents, single maintainer). Internal support model must be "the team owns the output," which is the correct model anyway. Document the generator's conventions in the ADR so future engineers don't mistake generated patterns for deliberate design.

Scaling. Two separate axes:

  • Generation-time scaling: large schemas (100+ tables) mean long introspection runs, hundreds of files, and a review burden that can exceed the time saved. Above ~30–40 tables, generate in slices by module, not in one shot.
  • Application-time scaling: quality of generated code governs performance — watch for missing eager loading on detected relationships (N+1), absent pagination on index actions, no query-level filtering, and per-request COUNT(*) from Blade pagination. These are fixable but must be caught in the hardening pass, not in production.

Failure modes.

Failure Detection Impact Mitigation
Version incompatibility (Laravel/PHP/DBAL) Spike, CI smoke run Blocks adoption entirely Prove on target version before committing; fork if needed
Type-mapping errors (enum/JSON/geometry/decimal) Code review of generated rules & casts Wrong validation, silent data corruption Domain review of every Request class; explicit casts
Regeneration overwrites hand edits Diff after re-run in sandbox Lost work, merge pain One-shot generation; never re-run on a dirty tree
Route collisions / signature-derived routes route:list diff Runtime 404/500, shadowed endpoints Replace with explicit resource routes
Over-permissive validation/mass assignment Security review, static analysis Injection of unintended fields Explicit $fillable; tighten nullable rules
Generated-code calcification PR review metrics Long-term maintainability debt Ownership rule + style enforcement in CI

Ramp-up. For a Laravel-fluent engineer: ~half a day to run the generator and read the output; ~2–3 days to become competent at correcting its inferences and integrating auth/policies. For a team new to Laravel: misleading — the generated code looks authoritative and encourages cargo-culting patterns (fat controllers, implicit routing) that the team then propagates. Ramp-up cost is therefore bimodal and should be scoped accordingly: safe for a Laravel-competent team, risky as a teaching tool.

Bottom line for the decision log. Approve as a scoped, one-time Phase 1 accelerator for a database-first internal/admin Laravel app on a schema the team already trusts, with a mandatory output-review gate and the dependency removed post-generation. Reject as a standing dependency, as an API-layer generator, and anywhere the team lacks the Laravel fluency to audit the emitted code — the archived status and heuristic validation inference make unsupervised use the primary operational hazard, not the license or the star count.

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.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route