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

Page Builder Bundle Laravel Package

openstudio/page-builder-bundle

A Laravel package that provides a flexible page builder for composing and managing content pages from reusable blocks, with bundled components and tools for defining, rendering, and editing page layouts in your application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a Symfony 7 bundle wrapping GrapesJS, not a Laravel package. That distinction drives the entire evaluation. A Symfony bundle is a packaging convention — DI extension, service configuration, Twig/asset registration, bundle registration in config/bundles.php. None of that is portable to Laravel. The README's "standalone, framework-agnostic" claim is the only path to reuse in a Laravel codebase, and it is unverified: with 1 star and 0 dependents there is no evidence of anyone consuming the framework-agnostic layer independently of the Symfony integration. Architecturally, the reusable asset is the GrapesJS editor shell plus a persistence contract for page/block JSON; the Symfony glue is disposable. Treat this as "a GrapesJS integration reference implementation we may fork or vendor," not "a dependency we install."

Integration feasibility. Medium-to-low for a Laravel target. Realistic path: extract the GrapesJS front-end assets and the HTML/JSON storage shape, then re-implement the server side as a Laravel package (service provider, config publish, migrations, storage driver, policy/authorization hooks). That is closer to a 2–4 week build than an afternoon composer require, and the effort is dominated by the parts this package cannot supply for us — multi-tenancy, revision history, content sanitization, and media handling. If the target stack were Symfony 7, feasibility rises sharply to maybe a 1-week spike, because the bundle conventions do the wiring for us.

Technical risk.

  • Adoption risk (high): 1 star, 0 dependents, single maintainer org (openstudio-fr). No community validation of the API surface, no downstream bug reports to learn from, no ecosystem of plugins.
  • Bus factor / abandonment (high): A single-vendor bundle with a low score is a long-lived maintenance liability for anything user-facing.
  • Licensing (medium, resolvable): LGPL-3.0 is copyleft with relinking obligations. For an internal or SaaS deployment this is normally acceptable; for a distributed or on-prem product, or if we fork and relicense, legal review is mandatory before we build on it. GrapesJS itself is permissive (BSD-3-Clause), so the editor layer is not the constraint — the PHP wrapper is.
  • Metadata anomaly (low but worth a question): the "last release 2026-09-27" date is in the future relative to expected timelines; could be a bad tag, a squashed release, or scraped metadata noise. Confirm real release cadence before assuming active maintenance.
  • Security surface (medium): a page builder stores and renders arbitrary HTML/CSS authored by users. Sanitization, CSP compatibility, and stored-XSS posture are ours to own regardless of what the bundle ships.

Key questions for the maintainer / spike.

  1. Does the "framework-agnostic" mode have a documented, tested entry point that does not require the Symfony kernel — and is it covered by CI?
  2. What is the persistence contract (schema, JSON shape, versioning of saved page data) and is it stable across releases?
  3. What is the support model — is this an internal OpenStudio tool published publicly, or a maintained product?
  4. Which GrapesJS version is pinned, and how are upstream breaking changes handled?
  5. Are there sanitization/allowlist defaults for stored HTML, or is that fully delegated to the host app?
  6. Is LGPL-3.0 compatible with our distribution model (SaaS-only vs. shipped artifact)?

Integration Approach

Stack fit. Poor as a direct dependency for Laravel; good as a reference implementation. The GrapesJS editor is the genuinely valuable, genuinely framework-agnostic half — it is a JS library that talks to a save/load endpoint. Our Laravel side wants: a route group for load/save/publish, an Eloquent-backed pages table with a JSON content column, a media/asset endpoint, policy-based authorization on edit vs. publish, and Blade/Vite-delivered editor assets. The Symfony bundle gives us a worked example of that boundary, not a drop-in.

Migration path. Do not attempt to run the bundle under Laravel via a Symfony-compat shim. Two viable options:

  • Option A (recommended): vendor the editor assets and the persistence schema, reimplement the server layer natively in Laravel. Cost is upfront but the result matches our conventions and we control the upgrade path.
  • Option B: treat it as a throwaway prototype — stand up the Symfony bundle in a scratch app to validate the GrapesJS editing UX and the JSON shape, then rebuild. Fastest way to derisk the unknowns with zero production commitment.

Compatibility. Verify PHP version ceiling/floor against our runtime, Symfony 7 constraint (irrelevant for Option A except as a signal of recency), and GrapesJS major version. Check whether the bundle assumes Doctrine ORM for persistence — if so, the storage layer is entirely non-portable to Eloquent and Option A is forced. Also confirm asset delivery assumptions (Webpack Encore vs. Vite) since that determines how much front-end glue we rewrite.

Sequencing.

  1. Week 1 — spike / go-no-go. Read the source (it is small enough to read fully), confirm the persistence contract, and run a 2-day prototype in a scratch app to validate editor UX and JSON stability. Deliverable: build-vs-adopt recommendation with an effort estimate.
  2. Week 2 — legal + maintenance check. LGPL opinion against our distribution model; maintainer responsiveness test (open one issue, measure response).
  3. Weeks 3–4 — Laravel port of the server layer, if the spike passes: service provider, config, migrations, load/save/publish endpoints, authorization.
  4. Week 5 — hardening: HTML sanitization, CSP, revision history, media pipeline.
  5. Week 6 — pilot with one internal content team before general availability.

Operational Impact

Maintenance. We should assume we own this code. Forking under LGPL-3.0 is permitted, and given the adoption profile, a maintained internal fork — with upstream syncing as an optional courtesy rather than a dependency — is the realistic operating model. Budget roughly 10–15% of one engineer's time ongoing for GrapesJS upgrades, security patches, and editor bug triage. If we adopt the Symfony bundle directly in a Symfony app, maintenance drops but we inherit the upstream bus factor.

Support. No commercial support indicated, no dependents to consult, and a single publisher. Internal support will be first-line; there is no community to escalate to. Document the fork's ownership explicitly in the service catalog so it does not become orphaned code nobody claims.

Scaling. The PHP side is thin — save/load of a JSON blob — so it scales like any CRUD endpoint and is not the bottleneck. The real scaling questions are (a) payload size of saved page documents as pages grow, which affects DB row size and API latency, and (b) rendering: if pages are server-rendered per request, cache aggressively; if rendered client-side from JSON, the editor bundle size and asset caching become the concern. Neither is unusual, but both must be designed rather than inherited.

Failure modes.

  • Upstream abandonment: mitigated by the fork; cost is the 10–15% ongoing tax.
  • Schema drift: if saved page JSON shape changes between versions without a migration story, published pages silently break. Mandate a schema_version field in stored documents from day one.
  • Stored XSS: the highest-severity failure mode. The builder accepts rich HTML; sanitize on save with an allowlist, and treat the CMS output as untrusted at render time.
  • License exposure: if we distribute a product containing a modified LGPL library without satisfying relinking/replacement obligations, we create a compliance finding. Resolve before launch, not after.
  • Maintainer key-person loss: no fallback maintainer exists; the fork is the contingency.

Ramp-up. Low for a mid-level Laravel engineer to use the editor; moderate to own it. GrapesJS has a real learning curve for plugin and block customization, and the team will need one engineer comfortable with its block/component model rather than just its config. Expect 1–2 weeks of ramp for the owning engineer, plus a short design handoff so the content team's block requirements are expressed as GrapesJS blocks rather than ad-hoc HTML — otherwise the first six months produce an unmaintainable pile of hand-authored markup. Overall recommendation: do not adopt as a dependency; do run a one-week spike and treat it as a reference implementation for a native build. The opportunity score (~58) reflects genuine demand for a PHP page-builder capability; the package score (~18) says this specific artifact is not the thing to bet production on.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
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