michielkempen/nova-froala-field
Laravel Nova field that integrates the Froala WYSIWYG editor for rich-text content in Nova resources. Adds an easy way to use Froala editing in forms with configurable editor options for managing HTML content.
Architecture fit — This is a Nova field package, not an application library. Its entire footprint is a Vue component + a PHP Field subclass registered in NovaServiceProvider::fields() or attached to a resource. That is a well-bounded extension point: it does not touch routing, auth, queues, or the domain model. The architectural question it does raise is ownership of the upload path — Froala's image/video/file upload support needs a server endpoint, storage disk, and validation, and the package only provides the client-side hook. That endpoint is our code and our operational responsibility regardless of what the package does.
Integration feasibility — Mechanically simple: composer require michielkempen/nova-froala-field, publish config/assets, reference the field in a resource, supply the Froala license key. The real feasibility gates are elsewhere:
Nova::script() registration under Nova 5. Verify the nova constraint in composer.json before anything else.dist/, pulled from npm at build time, or loaded from a CDN. Each is a different risk: bundled = stale and unauditable; npm = we own the build; CDN = CSP and availability dependency.Technical risk
composer install. A Nova bump can ship green and break every rich-text input in production.Key questions
Stack fit — Fits any Laravel + Nova application with no build-tooling changes on the host side, provided Nova's major matches. Assume a Nova 4 or 5 app on PHP 8.1+. If the platform is on Nova 3, this package is effectively a dead end.
Migration path / adoption path
Compatibility checks — Nova major and minor; PHP version; the host app's asset pipeline if we need to recompile; Content-Security-Policy (rich-text editors frequently require relaxed style-src/img-src, and a strict CSP will break the editor invisibly); and storage configuration for the upload disk. Also check DB column types — rich text needs LONGTEXT/TEXT, and any full-text index on that column will need rethinking.
Sequencing — (a) License/procurement decision → (b) Nova compatibility spike → (c) sanitization + upload endpoint → (d) CSP and asset verification in staging → (e) single-resource pilot → (f) broader rollout with a documented revert (remove the field, fall back to Nova's built-in Trix field, keep the data). If any step in (a) or (b) fails, stop — do not proceed to sanitization work on a package that may not load.
Exit strategy — Nova ships a built-in Trix field that covers most rich-text needs with zero third-party dependency and zero licensing cost. Before committing, get an explicit answer to "why not Trix?" If the answer is a specific toolbar/plugin requirement, that's a legitimate justification — but document it, because it's the argument you'll need to re-make at every future upgrade.
Maintenance — The package has had no release since March 2023 and has effectively no community. Assume we are the maintainers: budget for occasional forking, patching the pinned Froala version ourselves when a CVE lands, and recompiling assets against new Nova majors. This is a recurring line item, not a one-time integration cost. Weigh that against a ~2-hour Trix integration.
Support — No commercial support path for the package. Froala, by contrast, does sell support — confirm whether the license tier includes it, because security patches for the editor are the thing we most need handed to us. For Nova itself, support flows through Laravel's commercial channel and is unrelated to this package.
Scaling — The editor is client-side; the server-side cost is (1) one HTML blob per record and (2) uploads. Watch three things: database row size if authors paste large documents, storage growth and egress from the upload disk (S3 costs scale with author behavior, not user count), and the fact that rendered HTML is not searchable — if editorial search matters, plan a plaintext derivative column alongside the HTML. No shared in-process state, so horizontal scaling of the app tier is unaffected.
Failure modes to design for
composer install.Ramp-up — Roughly half a day for a developer to wire the field and an author to learn the toolbar; negligible for content authors familiar with Word-style editors. The real onboarding cost is on the platform side: sanitization policy, upload security review, licensing administration, and CSP exceptions. Estimate 3–5 engineer-days end-to-end plus a legal/procurement cycle. Produce a one-pager capturing the pinned version, the license key's owner and renewal date, the sanitizer allowlist, and the Trix fallback procedure — that document is what makes this supportable by someone other than the person who integrated it.
Recommendation — Conditional no. Approve only if (a) a specific authoring requirement cannot be met by Nova's built-in Trix field, (b) the Froala license is procured and its renewal is owned, and (c) the Nova compatibility spike and server-side sanitization are treated as blocking prerequisites. Absent all three, take Trix and spend the saved effort elsewhere.
How can I help you explore Laravel packages today?