marshmallow/boolean-group
A Laravel package for organizing boolean flags into named groups and evaluating them as a unit. Define reusable condition sets, combine checks with a fluent API, and keep feature-flag or eligibility logic readable and centralized.
is_* columns.BooleanGroup field, (b) an afternoon of internal work writing a custom field, (c) this package. Cost of replication is low; the decision is mostly about maintenance ownership, not capability.Consider it only when all of the following hold:
BooleanGroup does not give you — e.g., custom ordering, human-readable labels decoupled from the JSON keys, "select all / none" affordances, or conditional visibility between toggles.composer.json, read the ~few hundred lines of source, confirm it has tests, and confirm the PHP/Laravel/Nova version constraints match your stack.Look elsewhere (or build in-house) when:
BooleanGroup already covers the requirement. That is the default answer and it costs zero maintenance.Toggle components.One-liner for executives: A small, free UI add-on for our internal admin panel that lets an editor manage a set of on/off settings in one control instead of many checkboxes. It is optional, low-value, and we should treat it as disposable code we own rather than a vendor relationship.
For engineering: A Laravel Nova field that renders/edits grouped booleans (typically one JSON column). It duplicates a capability Nova already ships, so the decision is "use first-party vs. adopt-and-fork this." v1.2.0 adds Nova 5 support via a merged community PR, which confirms the field still works on current Nova but does not change the underlying risk profile. If we adopt: pin the version, read the source, add our own test around the column's read/write path, and keep a fallback because the package has one maintainer, negligible dependents, and no adoption signal.
Risk framing: Low technical risk (admin-only rendering), moderate maintenance risk (third-party field can break silently on future Nova majors — v1.2.0 addressed Nova 5 but there is no stated support policy beyond that), zero strategic risk (no lock-in — the data lives in a plain JSON column). Maximum downside is a day of engineering to replace it.
Recommendation: Default to Nova's built-in field. Sponsor this package only as a short-term internal convenience where it demonstrably saves UI work. The Nova 5 compatibility bump slightly improves the near-term picture and removes a hard blocker for Nova 5 shops, but with no dependents and no support commitment, budget the ~1 day to replace it in-house if it goes stale. Do not add it to any customer-facing roadmap or architecture standard.
How can I help you explore Laravel packages today?