brandonjbegle/nova-grapesjs-page-builder
Adds a GrapesJS drag-and-drop page builder to Laravel Nova so you can create and edit HTML pages visually, store layouts on your models, and manage content without leaving the Nova admin panel. Provides a Nova field and supporting assets.
This package is a Laravel Nova extension; the v0.2.1 release is a compatibility bump to Nova 5. Treat Nova 5 as the supported baseline going forward.
composer.json for laravel/nova: ^5.0 and ensure your auth.json / COMPOSER_AUTH contains your Nova credentials before running anything.composer require vendor/package:^0.2.1) rather than a floating *. Minor releases in 0.x are allowed to break.vendor:publish tag(s) for config and any compiled assets, then register the tool/card/field in app/Nova/NovaServiceProvider.php — tools() for a full-page tool, cards() for a dashboard card, or via Nova::resources()/field resolution for resource-level pieces. Consult the package README for the exact class name; it is the authoritative source here.If you are upgrading from an earlier 0.x, the practical first step is a throwaway branch: bump the package and Nova together, run php artisan nova:publish, rebuild frontend assets, then load the dashboard. Doing both upgrades in one commit is fine; doing them across two makes the failure ambiguous.
Keep Nova coupling at the edges. Nova tools tend to leak into controllers and models. Wrap package interactions in a small service or action class so your domain code stays testable without booting Nova's HTTP stack.
Authorization belongs in Nova, not the tool. Use Nova's canSee / authorizedToView hooks and Nova gates rather than conditional rendering inside the tool component. This keeps visibility rules consistent with the rest of your Nova resources and survives package upgrades.
Configuration over forking. Most Nova packages expose behaviour through a published config file. Prefer config and per-instance constructor options (labels, filters, default sort) over editing the package's Vue components — forked components are the single most common source of "works locally, blank panel in production."
Multi-panel and menu placement. If you run more than one Nova panel, register the tool in each panel's provider (or a shared base provider) and set $menu/$menuIcon deliberately. Duplicate registrations across providers produce the tool appearing twice, which is easy to miss because both entries work.
Test with Nova's helpers where available. Nova ships testing utilities for resource and action flows. For a tool, a simple feature test asserting the route returns 200 for an authorized user and 403 for an unauthorized one catches the majority of registration regressions cheaply, and runs fast enough for CI.
Version your CI matrix deliberately. If you still support Nova 4 consumers, test both; if not, drop Nova 4 from the matrix in the same release that declares Nova 5 support, so the claim in the README matches what CI actually proves.
COMPOSER_AUTH in CI surfaces as "package not found" rather than an auth error, which sends people hunting for tag typos. Set the secret first.^0.2.1 permits 0.3.0, which may break you. Pin exact versions in production and upgrade intentionally.composer.json require block for the actual Nova constraint — that is the contract, not the release note.php artisan nova:publish, clear view:clear and config:clear, and delete any orphaned public/vendor/nova artifacts. A 404 on a hashed JS chunk in the browser console is the tell.php artisan route:list --path=nova confirms whether the tool's routes exist; if they don't, the problem is NovaServiceProvider, not the component.Nova::script() / Nova::style() hooks. Avoid subclassing package internals or patching vendor files — both are invisible to code review and vanish on the next composer update.composer.json only or also shipped functional changes; if the latter, re-verify the tool renders before trusting the upgrade in production.How can I help you explore Laravel packages today?