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

Nova Custom Views Laravel Package

digitalcloud/nova-custom-views

Add fully custom views to Laravel Nova resources. Define your own index, detail, and form screens with Blade templates, keeping Nova's navigation and authorization while giving you complete control over layout and data.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • "Build vs. buy vs. fork" — the only framing that fits. At 79 stars, zero dependents, and a last release of 2018-11-12, this is not a library selection decision; it is roughly 200–300 lines of glue code that renders a Blade view inside a Nova screen. The real strategic options are: (a) vendor it, pin it, and own it; (b) fork it into your namespace with a compatibility test against your Nova/Laravel/PHP matrix; or (c) replace it with a native Nova custom field/tool (≈30 lines on Nova 4+) and remove the dependency entirely. Treating it as a normal composer dependency with no named owner is the failure mode — it becomes an unplanned migration line item at your next Nova upgrade.

  • Admin-surface roadmap: ship internal panels this sprint vs. next quarter. The concrete value is turning "add an ops health panel / Stripe customer snapshot / changelog view / external-system sync status" from a multi-week Vue tool scaffold into days of Blade work, using Nova's existing layout, auth, and navigation. That is a real scheduling decision for internal tooling that rarely competes well for frontend capacity. Measure every other claimed benefit against this one — it is the entire proposition.

  • Resolve the product-identity ambiguity before scoping anything. The README pitches navigable custom pages (route + menu entry + middleware/auth inheritance); the engineering review, working from the code, describes a Nova field that renders a Blade partial on a resource screen (fields() entry, ->with() data callback). These are different products with different integration costs, different authorization surfaces, and different upgrade risk. Do not commit a sprint until someone has read src/ end-to-end and confirmed which one you are buying. Ten minutes of code reading replaces a week of misdirected estimation.

  • Sequencing against the Nova upgrade — put both decisions on one board. Nova 2 reworked field/meta serialization; Nova 3/4 moved the Vue and asset pipelines. On Nova 3+ the PHP side may install cleanly while the JS component silently fails to register (blank panel, "unknown component" console error). If a Nova major upgrade appears anywhere on the roadmap, that upgrade is this package's retirement date. Decide the migration path now, while the screens are few and the cost is roughly a day, rather than discovering it mid-platform-upgrade.

  • Team shape and capacity allocation. It lowers the bar for Blade-fluent, Vue-light Laravel developers to contribute admin UI — valuable when frontend skill is thin, contracted, or committed to customer-facing work. The inverse is equally a decision input: if your team is Vue-strong and already on current Nova, this package buys you nothing and adds unowned surface area.

  • Use-case fit is genuinely narrow — say so explicitly. Good fit: read-only detail-screen panels, one-off reports, external-system status blocks, admin settings summaries, and Blade partials already living in the main app. Poor fit: customer-facing UI, anything needing SPA behavior (tabs, filters, polling, modals), or screens spanning many pages. The rule of thumb to circulate: if the view needs to know something after the page load, this is the wrong tool.

  • A market signal worth recording for platform strategy. A high opportunity score against a mediocre overall score is a demand signal: teams want lightweight, Blade-based custom admin screens in Nova, and maintained supply is thin. That argues for standardizing internally — deliberately own a fork, or standardize on a modern admin framework (native Nova tools, Filament, Backpack) — rather than letting bespoke, unowned glue accumulate per project.

When to Consider This Package

Consider it when:

  • You are on legacy Nova (1.x/2.x) where native custom fields/tools are absent or awkward, and compatibility has been verified on a throwaway resource in a branch — not inferred from composer.json.
  • Screens are internal-only, low-traffic, read-mostly, and sit behind Nova's existing auth. Verify explicitly that the custom view inherits resource policy enforcement; the engineering review flags authorization bypass as a live risk, particularly for the "full page" interpretation where a custom route may not inherit Nova's resource policies. If the panel exposes cross-tenant or out-of-scope data, require an explicit Gate::allows() / authorize() plus a test.
  • Your team is Blade-fluent and Vue-light, and the realistic alternative is weeks of custom tool scaffolding for a handful of panels.
  • Scope is small and bounded — a few detail-screen panels, not a parallel admin application.
  • You can vendor or fork, pin the version, commit published views/assets so a fresh clone doesn't depend on a publish step, add a compatibility test, and name an owner. No owner, no adoption.

Look elsewhere when:

  • You are on Nova 3/4/5. A native custom field is ~30 lines, supported, and maintained; a native Nova Tool is the equivalent replacement for a full page. This is the cheapest path and the one that survives your next upgrade.
  • The screen needs any post-load interactivity — buttons that mutate state should link out to Nova Actions or Tool pages, not wire Alpine/axios into 2018-era injected HTML. You will lose that fight against the component lifecycle and asset pipeline.
  • You need real frontend ownership (SPA behavior, design-system fidelity, customer-facing UI). Use a maintained admin framework or build it properly.
  • You cannot absorb the hidden costs: view data is serialized into the page payload (passing whole Eloquent models bloats responses and can leak attributes), v-html injection makes {!! !!} an XSS vector requiring audit, and Nova's aggressive asset caching makes nova:publish + hard refresh a routine debugging step.
  • Nobody will own it. Zero dependents and no releases since 2018 means no security response path. Fork it into your namespace or don't ship it.

Adoption gate (cheap, run it first): one throwaway resource, one read-only panel, one branch. Confirm the component registers in the browser console, confirm the view namespace resolves, confirm authorization behaves. If a blank panel appears, triage in this order: browser console for a Vue registration error → composer show for what actually installed → view:clear for namespace resolution → published assets. PHP errors surface in the Nova log; a silently empty panel is almost always JS or view resolution.

How to Pitch It (Stakeholders)

To executives — one paragraph: There is a small, unmaintained open-source helper that lets us drop Blade templates into our Laravel Nova admin as read-only panels, so we can ship internal ops screens — health checks, billing snapshots, sync status — in days of Blade work instead of weeks of frontend scaffolding. It is roughly a few hundred lines of glue code, last released in 2018, with zero dependents and no security response path. The recommendation is therefore not "adopt a library" but a bounded, time-boxed decision: we either fork and own it with a named owner and a compatibility test, or we replace it with roughly thirty lines of native Nova code on a current version. Either way we set the retirement date now — the next Nova major upgrade — so it never becomes a surprise line item.

To engineering — the honest version: This is a 2018-era Nova 1.x package. The PHP side may install and boot cleanly while the Vue component fails to register on Nova 3+, producing a blank panel and a console error. That is the headline risk, and it is cheap to test: one throwaway resource, one branch, one read-only field defaulting to ->onlyOnDetail() and ->exceptOnForms(), with data computed in the ->with() callback and rendered dumb in Blade using {{ }} only. If it works and the Nova version is legacy, we vendor it, move it into our namespace, pin it, commit published assets, add a matrix compatibility test, and name an owner. If it doesn't work — or if we're on Nova 4+ — we write the native field instead and skip the dependency entirely. We also resolve the docs inconsistency first: navigable page vs. field-rendered partial are different integrations, and the code is the source of truth. Authorization is enforced in the view, not assumed from the route.

The one-line framing to reuse: a narrow, cheap, deliberately-owned tool for read-only internal admin panels on legacy Nova — valuable precisely because it is small, and dangerous precisely because it is unowned.

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
cgv/localized-resource