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 Page Builder Field Laravel Package

digitalcloud/nova-page-builder-field

A Laravel Nova field that adds a page builder to your resources, letting users compose and manage page content through a flexible builder UI. Integrates page building directly into Nova so content structures can be created and edited alongside your models.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a Laravel Nova field, not a CMS. It contributes two things: a PHP Field class (column binding, meta) and a Vue component that mounts GrapesJS in the Nova admin UI. Everything else — content modelling, routing, rendering, media, publishing workflow — is left to the host application.
  • That means it only fits an architecture where: (a) Nova is already the admin surface, (b) "pages" can be represented as a single opaque HTML/JSON blob on one Eloquent model, and (c) the team owns a separate Blade/Vue render path that takes that blob and outputs a page.
  • Architectural coupling is to GrapesJS, not to Laravel. GrapesJS is a mature, actively maintained JS library; the abandonment risk sits in the thin Nova wrapper, not the editor itself. That is the single most important distinction for a build-vs-buy call.
  • Last release 2019-01-28 places it firmly in the Nova 1.x/2.x, Laravel 5.7–5.8, Vue 2 era. Nova 4 (2022) moved to Vue 3 and a substantially different field registration/meta API, so this package is effectively incompatible with any currently supported Nova line.

Integration feasibility

  • Nominal integration is trivial (composer require, register field, add to a Nova resource), but the practical path is blocked by transitive constraints: PHP/Illuminate/Nova version pins and a Vue 2 component contract that Nova 4+ will not load.
  • Realistic integration therefore means forking the package into app/Nova/Fields and rewriting the Vue component for Vue 3 + Nova's current field API. That is a 3–6 day engineering task for a competent Laravel dev, plus test coverage.
  • The render side is entirely unbuilt. Expect to add: sanitization (HTMLPurifier or equivalent), a Blade layout that injects the stored markup, image/responsive handling, and cache invalidation.

Technical risk

Risk Severity Notes
Abandonment (last release Jan 2019, 31 stars, no visible CI) High No security patching, no PHP 8 / Laravel 10+ support, no issue triage
Stored-XSS from unsanitized GrapesJS output High Page-builder HTML is rendered raw; must be sanitized server-side on save and render
Nova/Vue version lock High Requires fork to run on any supported Nova
GrapesJS asset loading (likely CDN) Medium Supply-chain and uptime dependency; must vendor/pin the JS
Opaque storage format Medium HTML vs. GrapesJS project JSON matters for re-editability; no revisions, no draft/publish
Single-maintainer / agency provenance Medium No SLA, no roadmap, no CVE process

Key questions

  1. What is the persisted format — rendered HTML, GrapesJS project JSON, or both? Re-editability and migration cost hinge on this.
  2. Is GrapesJS bundled or CDN-loaded, and at what version?
  3. Is there any sanitization on save, or does the field trust the editor entirely?
  4. Does it support media/image uploads, and where do those assets land (public disk vs. storage)?
  5. Are there revisions, drafts, or localization hooks, or is it one column, last-write-wins?
  6. Do we already own a Nova license, and which Nova major version (2/3/4/5) is the target?
  7. Who owns the fork long-term if we adopt it?

Integration Approach

Stack fit

  • Fit is good only for a Laravel + Nova admin with marketing/landing-page needs, in a small team that wants drag-and-drop authoring for non-engineers.
  • Poor fit for: customer-facing apps without Nova, multi-tenant content platforms, localization-heavy sites, or anything needing structured content (the blob model fights schema, search, and API serialization).
  • If the stack is Filament or a headless CMS, the correct move is to integrate GrapesJS directly rather than adopt this wrapper — the wrapper's only value is ~200 lines of Nova glue.

Migration path

Three viable options, in ascending cost:

  1. Reject / replace — use GrapesJS directly in a custom Nova Tool or Filament field, or adopt a maintained page-builder package. Lowest long-term risk; ~5 days.
  2. Fork-and-own — vendor the package, upgrade Vue 2 → Vue 3, adapt to Nova 4/5 field API, pin GrapesJS, add sanitization + tests. Preserves editor UX; ~3–6 days plus ongoing ownership.
  3. Adopt as-is — only defensible if the app is already frozen on Nova 2/Laravel 5.8, which for most teams is a non-starter.

Compatibility

  • Verify composer.json against the target PHP (8.1–8.4), Laravel (10/11/12), and Nova major. Assume failure on anything past Laravel 5.8 / Nova 2 until proven otherwise.
  • Confirm the Vue component builds under Vite (Nova 4+) rather than the legacy Laravel Mix/Webpack pipeline.

Sequencing

  1. Spike (0.5 day): read composer.json, src/, and the Vue component; confirm storage format, asset loading, sanitization, and Nova API surface. This decides between options 1 and 2.
  2. Security baseline (1 day): sanitizer on save + render, CSP allowance for the editor, authorisation policy on the field.
  3. Port (2–4 days): Vue 3 component, Nova field registration, GrapesJS pinned and vendored.
  4. Render pipeline (1–2 days): Blade layout, caching, image handling, preview route.
  5. Pilot (1 week): one marketing page type, two non-technical authors, measure authoring time and defect rate.
  6. Decide: promote, extend, or roll back to a maintained alternative.

Operational Impact

Maintenance

  • Effectively zero upstream maintenance. The team inherits the full burden on day one: PHP/Laravel upgrades, Nova API changes, GrapesJS major bumps, and any security issue in the editor or its plugins.
  • GrapesJS itself releases frequently; without a pinned version and a regression check, editor behaviour will drift silently.

Support

  • No vendor SLA, no issue triage, no CVE channel. Internal support means one or two engineers who understand both Nova's field lifecycle and GrapesJS's API — a narrow, bus-factor-1 skill set.
  • Author support is a real cost: non-technical users will produce broken layouts inside a free-form canvas. Budget for guardrails (locked blocks, approved component set) rather than open HTML.

Scaling

  • Read path is cheap: cached HTML fragments. With page/response caching this scales like static content.
  • Write path is fine — the editor is client-side and only admins use it.
  • Real scaling concerns are content-level: blob size, image weight and derivatives, cache invalidation on republish, and the absence of revisions making rollback manual.
  • Structured-data needs (search, sitemaps, APIs, localization) will not scale; expect to bolt on parallel fields or migrate off the blob.

Failure modes

  • XSS via stored markup — highest-severity, most likely.
  • Editor fails to load (CDN outage, version drift, CSP change) — authors blocked, content pipeline halts.
  • Broken pages after upgrade — Nova/Vue/GrapesJS bump silently changes saved schema.
  • Layout corruption — free-form canvas produces markup that breaks the host site's CSS.
  • Lost work — no drafts/revisions, last-write-wins on a single column.
  • Asset orphaning — images referenced in HTML but deleted/unmanaged.

Ramp-up

  • Engineers: ~1 day to read the codebase, ~3–5 days to be productive on the fork. Familiarity with Nova field internals and GrapesJS API is the gating skill.
  • Authors: 1–2 hours of onboarding plus a block library and a written "don't do this" guide. Free-form builders without constraints consistently generate support load disproportionate to their value.
  • Overall: low adoption cost, high ownership cost. The package is a reasonable reference implementation of "GrapesJS inside Nova" and a poor dependency. Recommend treating it as a starting point to fork or a pattern to reimplement — not something to composer require into a production application in 2025.
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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels