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 Json Laravel Package

64robots/nova-json

64robots/nova-json provides a JSON field for Laravel Nova, making it simple to view and edit JSON attributes directly within your admin panel. It offers a clean, developer-friendly way to manage structured data on Nova resources without building custom field components.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit 64robots/nova-json is a Nova field extension — a PHP field class plus a compiled Vue component registered through Nova's asset pipeline — that renders a JSON/JSONB column as an editable form control inside Laravel Nova resources. Architecturally it slots into a well-defined extension point, so there is no structural friction with a standard Laravel + Nova stack. The friction is governance, not architecture: it inserts a 26-star, archived, single-maintainer package into the admin plane, which is typically the highest-privilege surface in a Laravel application and the one place where unreviewed code has the widest blast radius.

Integration feasibility Installation is trivial (composer require, add the field to fields() on a resource, ensure the model casts the column as array/json). The real effort is verification, not integration. Because the repository is archived, we cannot rely on the maintainer to have validated compatibility with current Nova majors, Laravel 10/11, or PHP 8.2+. Nova 4 moved to Vue 3 and a reworked asset/build pipeline, so a Nova 2/3-era field component has a meaningful probability of not compiling or not rendering without patches.

Technical risk High, and concentrated in three areas:

  • Abandonment — archived means no security advisories, no CVE response, no dependency bumps. The 0.125 score and 26 stars are consistent with a package that never reached escape velocity and has no successor community.
  • Version coupling — the package's compatibility envelope is frozen at whatever Nova/Laravel/PHP versions existed at archive time. Any Nova upgrade becomes a blocking, unowned engineering task.
  • Data-plane correctness — JSON fields are a classic source of silent corruption: type coercion on round-trip (numbers becoming strings), null vs. empty-object handling, nested-structure flattening, and validation gaps where the field accepts shapes the application's domain logic does not expect. A field that writes malformed JSON into production columns is a data-integrity incident, not a UI bug.

Key questions

  1. Which Nova major is this field built against, and what is our current Nova version/license tier?
  2. Does the field round-trip types faithfully (numeric, boolean, null, deeply nested arrays), or does it stringify leaf values?
  3. Does it enforce any schema/validation, or does it accept arbitrary input straight into the column?
  4. Is the JSON shape we intend to edit stable and flat, or nested and evolving? (The former is survivable with a fork; the latter is not.)
  5. Is there a maintained fork or a credible successor package?
  6. Does Nova's built-in KeyValue field — or a small in-house field — cover the same requirement?
  7. Who owns the fork if we adopt it, and what is the upgrade runbook when Nova ships a breaking release?

Integration Approach

Stack fit Requires Laravel plus a licensed Nova installation. If Nova is not already a committed part of the stack, the package is moot — the decision is really "do we adopt Nova," and this field is a footnote. If Nova is present, fit is good on Laravel 8/9-era stacks and unproven beyond that.

Migration path Three viable paths, in descending order of preference:

  1. Replace — use Nova's native KeyValue field for flat key/value JSON, or a maintained community JSON field. Zero new ownership burden. Valid only if the JSON shape is flat.
  2. Rebuild in-house — a Nova field is a small, well-documented artefact. A 150–300 line internal field (PHP class + Vue component + a JSON schema validation rule) is a realistic 3–5 day build and eliminates the abandonment risk entirely. Preferred if the JSON shape is nested or business-critical.
  3. Fork and vendor — only if the package's UI (e.g., a specific editor experience) is genuinely hard to replicate. Fork into a private VCS, pin the commit, and treat it as first-party code with a named owner.

Straight adoption of the archived upstream is not recommended for anything beyond a throwaway internal tool.

Compatibility Build an explicit compatibility matrix before committing: Nova major × Laravel version × PHP version × Vue runtime. Verify the compiled JS assets actually load in the Nova 4/5 asset pipeline. Confirm the model cast (array vs json vs AsArrayObject) matches how the field serializes and deserializes.

Sequencing

  1. Spike (1–2 days) — install in a scratch Nova instance, verify render, edit, save, and read-back on a nested JSON payload; document type fidelity.
  2. Decide — replace vs. rebuild vs. fork, based on spike findings and shape complexity.
  3. Wrap — if adopting, encapsulate the field behind an internal class so the dependency is swappable in one place.
  4. Backfill validation — add a rules() entry enforcing the JSON schema at the field level, independent of the package.
  5. Regression-test — fixture tests asserting exact round-trip fidelity for nulls, empty arrays, numerics, booleans, and unicode.

Operational Impact

Maintenance Effectively 100% ours from day one. Archived status means the maintenance line item is not "upgrade the package" but "re-verify and patch the package on every Nova and Laravel upgrade." If Nova ships twice a year, budget a recurring half-day per upgrade cycle for the fork, plus unbounded time if the Vue component breaks.

Support No upstream support channel. Issues, PRs, and security reports go nowhere. Internal support falls to whichever engineer owns the admin panel — a single-point-of-failure pattern unless explicitly staffed.

Scaling Negligible from a runtime perspective: it is a form control, not a query path. The scaling concerns are payload size (very large JSON documents degrade the Nova edit page and browser responsiveness) and concurrent admin edits (JSON columns are prone to last-write-wins clobbering when multiple admins edit different keys of the same document). Neither is solved by this package.

Failure modes

  • Silent type coercion on save — numbers or booleans returned as strings, breaking downstream consumers that assume typed JSON.
  • Null/empty handling — a cleared editor writing "" or null where the application expects {}, or vice versa.
  • Validation bypass — arbitrary structure persisted because the field does not constrain input; corruption surfaces later in application code, not at the point of entry.
  • Upgrade breakage — a Nova release silently stops rendering the field, and admins either cannot edit records or, worse, submit an empty payload that overwrites existing data.
  • Rendering risk — if JSON content is echoed into the field without escaping, stored values can become an injection vector in the admin panel.
  • No security response — a disclosed vulnerability in a transitive dependency has no patch path except our own fork.

Ramp-up Low for any developer already fluent in Nova custom fields — the package surface is one class and one component, roughly half a day to read. The ramp-up cost is not comprehension but ownership discipline: establishing the fork workflow, the upgrade checklist, and the fixture-based round-trip tests. Teams without prior Nova field experience should assume 2–3 days to become confident enough to patch it, which is close to the cost of simply rebuilding it in-house — a strong argument for option 2 above.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings