outl1ne/nova-trumbowyg-field
An Outl1ne Laravel Nova field that brings the lightweight Trumbowyg WYSIWYG editor into your admin resources. Add a clean, customizable rich-text input for editing HTML content without the weight of larger editor packages. Simple to install and use in Nova forms.
TEXT/LONGTEXT column. For internal content surfaces — blog posts, help-center articles, policy pages, product descriptions, email templates — it turns a custom-field project into a one-line addition to a resource. It is a scope-reduction lever, not a product differentiator.Consider it when:
Text field, so translatable columns via spatie/laravel-translatable work with one editor per locale — a concrete roadmap unblocker for localization.Look elsewhere when:
To executives: We can deliver formatted-text authoring in our admin panel this sprint at essentially zero license cost. It's an MIT-licensed Laravel Nova field that gives internal teams a familiar toolbar — bold, links, lists — on the content types already in the backlog, without a custom-field project or a CMS procurement. The trade-off is ownership: the package is small and lightly adopted, so we should pin the version, own our HTML sanitization, and treat it as a tactical bridge rather than a platform commitment. If content needs grow to structured publishing or collaboration, we migrate deliberately — and because the stored data is plain HTML, that migration stays cheap. Recommended next step: a one-resource pilot with a defined "good enough" checklist before wider rollout.
To engineering: Drop-in Nova field wrapping the Trumbowyg editor, configured through a JSON-safe options array best centralized in a base field class so resources stay declarative. Two things we own: a server-side sanitizer on write (the field stores whatever HTML it receives) and CI validation that the editor actually mounts after Nova upgrades — silent failure to render is the common breakage. Watch for jQuery reintroduction into the Nova bundle, CSP conflicts from inline init, and dark-mode styling mismatches. Pin to 2.0.*, keep all extension in our own subclass rather than vendor/, and keep a documented one-line rollback to the native Text/Textarea field. Budget roughly a sprint-day for the spike, sanitizer wiring, and smoke test; assume we may fork if upstream goes quiet.
How can I help you explore Laravel packages today?