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 Grid System Laravel Package

codenco-dev/nova-grid-system

A Laravel Nova package that adds a flexible grid system for arranging fields, cards, and content into responsive multi-column layouts. Configure column widths, spacing, and breakpoints to build cleaner, more organized Nova dashboards and resource screens.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a presentation-layer Nova tool, not application infrastructure. It attaches as a fluent layout annotation on Nova field definitions, arranging fields, cards, and custom components into responsive rows and columns inside resource forms and detail views. It touches no domain model, no data access, no API surface — which is the point: the blast radius of adopting or abandoning it is confined to admin UI. It only creates leverage if the organization has already standardized on Laravel Nova for internal back-office tooling. If Nova adoption is partial, or if the team is still evaluating admin frameworks, this package is a distraction with no strategic payoff.

Integration feasibility. Conventional Composer install plus Nova tool registration (auto-registration, or an explicit entry in NovaServiceProvider::tools()). The real gate is version compatibility: this is a Nova 4-era artifact, last released 2023-02-20 (v2.0.1), with 81 stars and 0 dependents. Nothing in the ecosystem confirms it runs on Nova 5, Laravel 11+, or PHP 8.2+. The correct first commitment is a time-boxed sandbox spike against one representative resource — not a rollout plan. The public API surface is small and should be enumerated before any estimate: the fluent span methods, any macros registered on Nova's Field class, and the published config (breakpoints/gap). That list is the package.

Technical risk. Moderate-to-high, and the risks compound rather than sit independently:

  • Unmaintained upstream. Assume no one patches what you file. Every issue becomes yours.
  • Asset pipeline fragility. Nova tools ship precompiled JS. A missing or stale dist/js/tool.js is the single most common "does nothing" failure — it presents as an API problem but is a build problem.
  • Tailwind purge hazards. Dynamically constructed class strings (`col-span-${span}`) silently vanish in production builds unless safelisted. Layouts that work under npm run dev collapse under npm run production, and the failure is invisible until someone looks at a staging screenshot.
  • Conflicting width semantics. Nova's own fullWidth(), size(), stacked(), and the grid's span method set width-ish classes on different layers. Stacking them produces unpredictable results; the fix is discipline (one method per field), not code.
  • Fragile field wrappers. Anything that reparents the field's Vue component risks breaking attribute resolution, which cascades into validation error mapping, dependsOn, fillUsing, and authorization. That is a correctness risk wearing a layout costume.
  • Opportunity score of 32.24 confirms this is a narrow, low-velocity niche. There will be no ecosystem answer to your questions.

Key questions.

  1. Which exact Nova, Laravel, PHP, and Node versions does the target environment run, and does the package's constraint set actually cover them?
  2. Are compiled assets committed in the release tag, and does the tool's JS appear in Nova's admin network tab?
  3. Is the license acceptable for internal commercial use, and is there a contributor/CLA path if we fork?
  4. Does the package persist layout state, publish migrations, or write config — or is it purely a resource-definition concern? (Answer determines whether rollback is trivial or a data problem.)
  5. Which rendering approach does the Vue wrapper use — CSS Grid (grid-column: span N) or Tailwind width classes? Every override and exit decision flows from that one detail.
  6. What is the measurable outcome: faster data entry, fewer support tickets, lower training time? Without one, this is aesthetics work.
  7. Who is the named owner, and what is the documented fallback to native Nova fields?

Integration Approach

Stack fit. Laravel + Nova + Tailwind-based asset pipeline + Vue. If the released dist/ is stale or absent, the team needs a Node toolchain capable of building inside vendor/ — a non-trivial ask on a locked-down deploy pipeline. Confirm early whether the wrapper emits CSS Grid or Tailwind classes; the former sidesteps purge issues and makes app-level overrides a one-line stylesheet change, the latter requires safelist surgery.

Migration path. There is no data migration here, and that is the package's best property. Keep fields() returning a flat array of real Nova fields with span metadata attached per field — treat the grid as annotation, never as a structural wrapper. Extract each layout into its own class under app/Nova/Fields/ returning a static make(): array, so the same shape can be reused inside Action::fields() and detail panels. That isolation is what makes fork, rewrite, or removal a one-file change instead of a package-wide refactor. Strip the span calls and the resource reverts to stock Nova — document that as the rollback and rehearse it once.

Compatibility. Pin the exact version in composer.json. Build a small explicit test matrix rather than trusting the constraint string: Nova 4 vs Nova 5 (if both exist in the estate), PHP 8.1/8.2/8.3, Laravel 10/11. Verify asset registration and asset compilation on the target deploy pipeline, not just locally. Confirm production-build parity before signing off — a dev-only pass is not a pass.

Sequencing.

  1. License and code review — cheap, and disqualifying if it fails.
  2. Sandbox install on a throwaway branch against real version pins.
  3. Asset verification: dist/ present and non-empty, JS loading in the network tab.
  4. One resource, one layout pass. Pick a resource with 6–10 flat fields; rebuild as a 12-column layout — full-width textarea, two 6-span fields, then a 4/4/4 row. Diff the form against stock Nova.
  5. Audit custom and third-party fields in narrow cells (file uploaders, BelongsTo search, in-house components) before committing to any layout that uses them.
  6. Decide: fork/vendor, or stop. Do this before the second or third resource, not after.
  7. Cap initial scope at two to three resources and hold there until an owner and a maintenance commitment exist.
  8. Write the per-upgrade checklist and the removal runbook.

Operational Impact

Maintenance. Effectively unmaintained: 81 stars, zero dependents, no release since February 2023. Pin the version, and if the grid reaches more than two or three resources, vendor it via a path repository or a fork so the team owns the Vue component and can patch after a Nova upgrade. Commit dist/ in the fork — Nova does not build tool assets for you, and a gitignored dist/ looks broken on the next deploy with no error to chase. Override styles at the app level (resources/css/nova.css or a wrapper component), never in vendor/, where edits are silently reverted by composer update.

Support. Zero dependents means no community, no forum trail, no third-party answers. Every question routes to the internal owner. There is no vendor SLA and no security-response path. The realistic support model is: one named engineer, a pinned version, a documented fallback, and an explicit acceptance that a Nova upgrade may break the grid and the answer may be "remove it."

Scaling. This scales in scope cost, not runtime cost. Each additional resource using the grid adds maintenance surface and re-verification burden at every Nova/Laravel/PHP upgrade; the layout itself imposes negligible load. Do not let usage sprawl into a de facto design-system layer — that is exactly the foundational-dependency role this package is unfit for. Treat it as a tactical accelerator or a reference implementation for a later in-house field.

Failure modes. Nearly all of them are silent, which is what makes them expensive:

  • No-op render — assets missing or stale; fields render normally with no column behavior.
  • Production-only collapse — Tailwind purged dynamic classes; works in dev, breaks in prod.
  • Ignored span — a competing Nova sizing method (fullWidth(), size(), stacked()) is winning on a different layer.
  • Broken validation/conditional logic — wrapper reparenting disrupted attribute resolution; dependsOn fields collapse their cell and reflow the row when hidden.
  • Post-composer update layout drift — someone patched vendor/.
  • Silent regression after a Nova upgrade — the tool registers but no longer styles anything.

Mitigate with smoke tests on admin form rendering and a short visual checklist per deploy. Debug in the browser Elements panel against computed grid styles — that resolves in seconds what costs an hour through PHP traits and macros. Budget roughly half a day for the spike plus a named owner; the fluent API ramps quickly for anyone who knows Nova, and the real skill to build is asset-pipeline and devtools debugging, not PHP. Recommendation: trial on internal, low-risk Nova admin screens with an owner and an exit plan; do not standardize.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle