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

Laravel Admin Laravel Package

dcat-plus/laravel-admin

A Laravel admin panel package for quickly building backends: CRUD scaffolding, form and table builders, role-based access control, and a customizable UI. Built on the Dcat Admin ecosystem with extra components for rapid admin development.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Internal back-office delivery, not customer-facing product. This is a Laravel admin-panel framework: the right unit of decision is "how do we ship ops tooling (order management, content moderation, support consoles, approval queues, import/export jobs) without pulling engineers off the core roadmap," not "what do we build our product on."
  • Build vs. buy for CRUD-heavy operational surfaces. Adopting it buys the generic 80% (list/detail/forms/filters/permissions scaffolding) so the team only writes the 20% that is actually business logic. The decision to evaluate is whether that trade beats hand-rolling screens or standing up a separate admin app.
  • The differentiator to evaluate is the Action system, and it maps 1:1 to ops workflows. php artisan admin:action scaffolds row actions, batch actions, and toolbar tools — i.e., "approve selected," "publish," "re-sync to the ERP," "export this filtered set," "trigger a refund." That is precisely the category of request ops makes weekly. If our roadmap is full of one-off operational buttons, this collapses the per-button cost to a single generated class with a standardized handle() + Response (success/error/redirect/refresh/script) contract.
  • New in 1.3.0 — bulk data import is now a first-class grid capability, not a bespoke build. Model-backed grid import means "let ops upload a CSV/XLSX to create or update records" moves from a custom-job-plus-parser project to a framework feature on the list screen. That is a distinct build-vs-buy line item worth evaluating on its own: data-ingestion screens (price lists, supplier catalogs, user batches, entitlement grants, backfill corrections) are a recurring ops ask and historically an expensive one. The PM question to answer in the pilot is not "does it parse a file" but "does it give us validation, per-row error reporting, permission gating, and transactional safety" — import paths are where data-quality and security incidents come from, so confirm the failure semantics before putting it near production data.
  • New in 1.3.0 — expanded Tree capability raises the ceiling on hierarchical admin surfaces. Categories, org/territory hierarchies, menu/navigation structures, and taxonomy management are all tree-shaped; the framework's Tree component now covers more of that ground. Relevant if the internal-tooling backlog contains "let ops restructure the category tree" style requests, which are otherwise disproportionately expensive to hand-roll (drag/drop, re-parenting, ordering, integrity).
  • A roadmap input for internal-tooling throughput, not a feature bet. The relevant metric is cycle time on ops requests and time-to-first-useful-screen, plus reduced front-end dependency for internal screens.
  • A developer-tooling / AI-assisted-development decision. The documentation is structured as agent-consumable skill files (action-system reference, type tables, pitfalls, full worked examples). That is a legitimate input to "do we standardize our internal scaffolding so AI agents can generate consistent admin code" — the generated skeletons enforce namespace and container conventions, which is what makes agent-generated code reviewable.
  • Lazy rendering (lazy-table / lazy-form) is a UX decision for heavy admin screens. Modal-hosted async tables/forms let us keep list pages fast while still exposing drill-down detail and inline edit — relevant if ops users complain about slow pages with large datasets.
  • Explicitly not supported: anything requiring ecosystem depth. 145 stars, 0 dependents, a score of 1.325, and a prior release in December 2024 mean you cannot point to third-party packages, community answers, or hiring pools built around this fork. Treat adoption as "we are taking on a small, single-maintainer dependency," and price that in. 1.3.0 is a mildly positive signal on liveness — it is a real feature release, not a housekeeping bump — but one release does not establish a cadence. Keep the governance question open and re-check at the next release.

When to Consider This Package

Consider it when:

  • The stack is Laravel/PHP and will stay that way; the admin surface is internal-only with modest traffic and no strict availability SLO.
  • The bulk of pending work is operational CRUD plus bespoke "do X to these rows" buttons — the exact shape the Action generator and batch/row/tool containers are built for.
  • The backlog contains bulk-import screens. With 1.3.0's Model-backed grid import, this moves from "budget a sprint per import screen" to "configure and validate." If we have two or more ingestion surfaces on the roadmap, that alone can justify the pilot.
  • The backlog contains hierarchy management (categories, org units, taxonomies, nav structures) — the expanded Tree capability is directly on that path.
  • The team already runs Dcat Admin. This is a fork; the migration cost is the lowest possible entry point, and the upstream conventions (Grid/Form/Show/Tree, $grid->actions(), batchActions(), tools()) carry over unchanged.
  • You want to own the code path. MIT license means you can fork, vendor, and patch without legal friction — appropriate when the plan is "vendor it, pin it, and treat it as in-house."
  • You want standardized, generator-enforced scaffolding so that multiple engineers (or agents) produce admin code that looks the same and reviews cheaply.

Look elsewhere when:

  • The fork's additions aren't load-bearing for you. If you just need a Laravel admin panel, upstream dcat/laravel-admin has orders of magnitude more users, answers, and third-party add-ons. Note the asymmetry: the import and tree work in 1.3.0 are fork-side value, so this trade only pays if we actually use them. Choosing the fork for the documentation alone is a weak reason to give up the community.
  • Import correctness is business-critical and unproven. If the ingestion screens touch money, entitlements, or compliance data, require a spike that proves validation, partial-failure handling, idempotency, and audit trail before committing. Unverified import semantics on revenue-adjacent data is a stop sign, not a nice-to-have.
  • You need support guarantees, a security-response commitment, or a hiring pool. 0 dependents and 145 stars mean no ecosystem safety net. If the admin panel is business-critical (billing, fulfillment, compliance workflows run through it), an unsupported single-maintainer package is the wrong dependency — evaluate Nova, Filament, or a commercial admin product instead.
  • The surface is customer-facing or design-led. Blade/Dcat-style admin UI will not carry a branded customer experience; that argues for Livewire/Inertia/Next with a real design system.
  • The team is on a modern Livewire/TALL stack. Filament is the natural fit there (and has matured import support of its own); forcing a Dcat-based panel in creates a second paradigm.
  • You need real-time or heavy client-side interaction inside the admin (dashboards with live metrics, complex editors). The AJAX Action model is request/response, not reactive.
  • Governance gate: if procurement requires a maintained vendor, an SLA, or a documented release cadence, this fails the gate regardless of technical merit. 1.3.0 gives us a datapoint to cite, not a cadence.

Practical adoption guardrails if you proceed: pin the version (now 1.3.0 as the floor, since the import and tree additions are the reason to look), vendor or mirror the repo internally, assign a named owner for upgrades and security patches, keep the blast radius internal (no auth boundary extension into customer data without review), and scope any import surface to non-destructive operations with a dry-run/report mode until it has proven itself.

How to Pitch It (Stakeholders)

For executives — one paragraph plus the tradeoff: "We have a recurring drag: every ops improvement — bulk approve, export this list, re-sync to finance — becomes an engineering ticket and competes with product work. This package is a Laravel admin framework whose generator turns each of those requests into a small, conventionally-structured piece of code, so internal tooling ships in days and ops stops waiting on the roadmap. The latest release (1.3.0) added two things that matter to us specifically: built-in bulk data import on list screens, which is usually a custom project per screen, and deeper support for hierarchical data, which is what category and org-structure screens need. It's MIT-licensed, so there's no license cost. The honest risk: it's a small, single-maintainer fork with a thin user base, so we would own it, and the new import feature is untested by us. Mitigation is cheap and bounded — pin the version, keep a copy in our repo, prove the import behavior on non-critical data first, and confine it to internal screens that are not customer-facing or revenue-critical. My recommendation is a time-boxed pilot on one internal tool with an import need, with a go/no-go on measured cycle time; if it doesn't clearly beat hand-rolled screens, we stop."

For engineering — the substance:

  • It's Laravel-native, MIT, and a fork of Dcat Admin, so the mental model (Grid/Form/Show/Tree) and conventions are already familiar. Existing Dcat knowledge transfers.
  • The real value is the convention layer, not the widgets: admin:action emits the right parent class for the right container (RowAction, BatchAction, AbstractTool, LazyRenderable, lazy Form) into the right namespace, with the required $title/handle()/grid() already stubbed. That removes the most common source of inconsistency — people putting a batch action in the wrong place or hand-rolling AJAX.
  • One uniform backend contract: handle(Request): Response with chained success/error/redirect/refresh/script/alert. Front-end behavior is declarative, and actionScript/resolverScript/rejectScript give escape hatches without forking JS. confirm() and parameters() cover the confirmation-dialog and extra-payload cases; authorize() gives per-action permission checks.
  • href() cleanly downgrades an action to a plain link, which is the right tool for navigation and keeps AJAX off the hot path.
  • Lazy table/form keeps list pages fast and pushes expensive rendering to /dcat-api/render and /dcat-api/form.
  • 1.3.0 additions to verify in the spike: the Model-based grid import — confirm supported file types, whether it runs synchronously or queued, row-level validation and error surfacing, upsert vs. insert-only semantics, column mapping, size limits, and whether it's gated by the same authorize() permission model as actions. Treat it as a starting point, not a finished ingestion pipeline: we likely still supply the domain validation and audit logging. The expanded Tree capability — check what actually changed (re-parenting, ordering, depth limits, load strategy on large trees), since a vague "extended tree" note means the API surface may be new and less battle-tested than the older grid/form paths.
  • The docs are written as agent-usable reference material (type tables, file-location cheat sheet, hooks list, pitfalls, end-to-end example), so scaffold-then-review is a realistic workflow; code review focuses on handle() and authorization, not structure.
  • What we accept: we should treat it as vendored in-house code with a named maintainer. Budget a small recurring maintenance line, and do not extend it to authentication boundaries or customer data without a security review.
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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager