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 Ckeditor5 Classic Laravel Package

numaxlab/nova-ckeditor5-classic

Integrate the CKEditor 5 Classic rich-text editor into Laravel Nova as a ready-to-use field. Provides a familiar WYSIWYG editing experience for content fields in Nova resources and forms.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a thin Laravel Nova field: a PHP Field subclass that hands off to a compiled Vue component wrapping a bundled CKEditor 5 Classic build. That shape is idiomatic for Nova 3.x and cheap to reason about — no service provider magic, no database migrations, no runtime services. The value it stores is plain HTML in a column you own, which means the data model is durable even though the integration is not.

The fit problem is version-scoped. Last release January 2021 places it squarely in the Nova 3 / Laravel 8 / PHP 7.x–8.0 window, with asset tooling built on Nova 3's Mix-era conventions. Nova 4 (Vue 3 + Inertia) and Nova 5 reworked the field component contract and the front-end toolchain; a Nova 3 field component is not expected to mount correctly, and the compiled bundle certainly won't match the current asset pipeline. Any team on a supported Nova release should treat this as a port, not an install.

Integration feasibility. Mechanically trivial: composer require, register the field on a Resource, publish assets. The blockers are non-mechanical:

  • Composer constraint drift. An abandoned 2021 package will not declare support for Laravel 9/10/11/12 or PHP 8.1+. Expect to fork and relax composer.json, or vendor the source.
  • Licensing is not MIT end-to-end. The repository is MIT, but the vendored CKEditor 5 Classic build carries its own terms — GPL-2.0-or-later or a commercial license from CKSource. For an internal-only admin panel the practical exposure is low; for anything distributed, resold, or bundled into a client deliverable, this needs a legal read. This is the single most common reason this class of package dies in procurement.
  • No security intake. The CKEditor build is frozen at a 2020/2021 version. CKEditor 5 has since taken XSS and paste-handling advisories. An archived repo means no CVE response path — you inherit that obligation.

Technical risk. High, concentrated in maintenance rather than in the code being wrong. Concretely: single-maintainer bus factor of one, 38 stars (effectively no community to inherit the fork), archived status, no CI signal, no tests to lean on after a fork, and a pinned third-party editor build. The low composite score (2.16) and opportunity score (2.38) are consistent with "works today, dead tomorrow."

Key questions for the spike.

  1. Which Nova major are we on, and is a Nova upgrade on the roadmap within 12 months? (If yes → this package is a dead end regardless of effort.)
  2. Internal-only admin, or shipped to customers? (Determines whether the CKEditor GPL question is a footnote or a blocker.)
  3. Is the CKEditor feature set — toolbar, paste-from-Word, image upload — a hard requirement, or would a plain textarea/sanitized HTML field satisfy the authoring need?
  4. Who owns the fork? Named engineer, named review cadence, or nobody?
  5. Is server-side HTML sanitization already in place, independent of this field? (It must be — never trust the editor.)

Verdict: acceptable only as a short-lived, internal, Nova 3 artifact under an explicit fork-and-own commitment. Not acceptable as a component of a platform you intend to upgrade.

Integration Approach

Stack fit.

Stack Fit Notes
Nova 3.x / Laravel 8 / PHP 7.4–8.0 Workable Install as-is, then fork immediately
Nova 3.x / Laravel 9–10 / PHP 8.1+ Fork required Relax Composer constraints; smoke-test the Vue component
Nova 4.x / 5.x Not viable Component contract and asset pipeline diverge; rewrite
Non-Nova Laravel app N/A Field is Nova-coupled; use a standalone CKEditor integration

Migration path. Two clean routes, and the choice should be made before the spike ends:

  1. Adopt-and-fork. Vendor the repo into packages/ or a private VCS, rename the namespace, relax constraints, rebuild the CKEditor bundle from a current CKEditor 5 release under your own license terms. Cost is roughly 2–4 engineer-days for the initial fork plus a recurring tax. Buys you the existing UX with no author retraining.
  2. Replace. Swap to a maintained Nova-compatible rich-text field, or drop to a sanitized textarea plus a small custom CKEditor mount. Higher one-time UX change, near-zero ongoing tax. Preferred if Nova 4/5 is anywhere on the horizon.

Compatibility work, in order of likelihood of pain. Asset publishing under the current Nova pipeline; Composer constraint relaxation; CKEditor 5 major-version drift in the bundled build config (toolbar/plugin registration API has churned); PHP 8.1+ deprecations in the field class.

Sequencing.

  1. Spike (1 day). Install on a branch, confirm the field renders and round-trips HTML on your actual Nova version. Kill the initiative here if it doesn't mount.
  2. Licensing and security review (parallel, 1–2 days elapsed). CKEditor terms; confirm sanitization on write and read.
  3. Data contract first. Store sanitized HTML in a text/longText column with a stable shape. This decouples you from the field entirely — the editor becomes replaceable at any time.
  4. Fork or replace. Execute the decision from step 1. If forking, add a CI job that builds and lints the bundle so the fork doesn't silently rot.
  5. Decommission plan. Write down the trigger conditions for replacing the field (Nova major upgrade, next CKEditor CVE, first unscheduled fire). Abandoned dependencies need an exit criterion, not just an owner.

Operational Impact

Maintenance. You are the maintainer from day one. The package's own maintenance cost is zero because it is zero-value to maintain upstream — archived means no PRs merged, no dependency bumps, no responses. Budget realistically: a few hours per quarter for dependency hygiene, plus a half-day whenever Nova, Laravel, or PHP majors move. That tax is modest but permanent, and it is the kind of line item that quietly disappears from a roadmap until it becomes an incident.

Support. None. No maintainer response, no issue triage, no security advisories. Internal support means an engineer who has read the field's compiled Vue component — a nontrivial ask if that person leaves. This is the dominant operational risk, not the code.

Scaling. Two dimensions, both benign. Author concurrency is bounded by your admin panel's traffic and is nothing CKEditor can't handle. The real scaling consideration is bundle weight in the Nova admin JS payload — CKEditor 5 Classic is a few hundred KB, which is a perceived-performance cost on slow connections and a reason to lazy-load the editor. Stored HTML rendering at scale is an application concern (sanitization, caching, output escaping), not a field concern. No database or queue implications.

Failure modes, ranked by likelihood × impact.

  • Silent breakage on Nova upgrade. Highest likelihood. Symptoms range from a blank field to content loss on save. Mitigation: pin Nova, test the field on every Nova bump, and keep the HTML column format editor-agnostic so a swap is a UI change, not a migration.
  • XSS via stored content. The frozen CKEditor build won't receive paste-handling fixes. Mitigation: sanitize server-side on write and on render; treat the editor as untrusted input always.
  • Asset 404 after deploy. Classic Nova field failure — published vendor assets missing from the deploy artifact. Mitigation: assert the publish step in CI.
  • License audit finding. Low likelihood, high disruption if the admin panel is ever distributed. Mitigation: resolve before adoption, not after.
  • Fork rot. The fork diverges from a dead upstream with no rebase path, so it accumulates local patches. Mitigation: keep patches minimal and documented, or replace.

Ramp-up. Low for a competent Laravel developer — half a day to install, register, and configure the field. One to two days to be genuinely productive inside Nova field internals (Vue component contract, asset publishing, resolveUsing/fillUsing hooks). The hidden ramp-up is the replacement work later: whoever inherits this needs to reconstruct the decision context, which is exactly why the exit criteria belong in the repo README rather than a wiki.

Bottom line for planning. Treat this as a tactical, reversible choice with a known expiry date. Green-light it for an internal Nova 3 admin panel with a named owner and sanitization in place; block it for anything customer-facing, anything on a Nova upgrade path, or anywhere a licensing review is a gating step. The 2.16 score isn't a judgment on the code — it's an accurate read on the supportability of an archived, single-maintainer, version-pinned integration.

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