creode/nova-publishable
A Laravel Nova field package for managing publishable content, letting editors toggle draft and published states directly from Nova resources with minimal setup.
Architecture fit
creode-modules/nova-publishable is a Laravel Nova extension that layers publish-state behaviour (draft/published) onto Eloquent resources and exposes it through Nova's UI. Architecturally it sits in the presentation/administration tier: it is a Nova tool, not a domain service, so it should not become the source of truth for publishing. Fit is good where publishing is a simple boolean/timestamp concern on a model and where Nova is already the back-office surface. It is a poor fit if publishing has workflow semantics (multi-stage approval, embargo windows, per-locale publishing) — those need to live in the application layer, not in a Nova field/tool.
The 1.2.0 release is a single, narrow change: Laravel 11 compatibility (PR #2, first contribution from @makowskid). That is a dependency-compatibility signal, not a capability change. Treat 1.2.0 as "this package is not abandoned in the L11 migration" rather than as new functionality.
Integration feasibility Low-to-moderate effort. It is a Composer package with an auto-discovered service provider and (typically) a Nova tool/field registration plus a migration or publishable config. Integration is largely: install, run migration/publish config, attach the field or trait to the target Nova resource, and confirm the underlying model columns. There is no evidence of a service layer, external API, or queue dependency, so the blast radius is confined to Nova request handling and the affected models.
The real feasibility question is matrix compatibility, which the release notes do not state. "L11 compatibility" could mean the illuminate/* constraints were widened (supporting L10 and L11) or replaced (L11 only, L10 dropped). That distinction determines whether 1.2.0 is a safe patch bump or a coordinated upgrade with the framework. This must be verified from composer.json before adoption planning.
Technical risk
Key questions
illuminate/* constraints or replace them — is Laravel 10 still supported?Stack fit Assumes Laravel + Nova on the admin surface. With 1.2.0 the package is now viable for teams on Laravel 11 — the common case for a current Nova 4/5 upgrade. Where the stack is still on Laravel 10, confirm 1.2.0 does not force an early framework bump; if it does, defer adoption until the L11 upgrade is scheduled, since a Nova admin package is not a reason to move the framework.
Migration path Sequence the framework first, package second:
nova-publishable version.composer.json constraints for Laravel, Nova, and PHP.composer update creode-modules/nova-publishable --with-dependencies and record the resolved graph.published_at/is_published intact, filters and index badges correct).Compatibility
Confirm the package's Nova constraint matches the Nova major actually installed — this is the likeliest install failure. Also verify PHP minimum (L11 requires 8.2) against CI images and any shared hosting. If the package still supports Laravel 10, keep the constraint bounded (^1.2) rather than unbounded, so a future major cannot drift in unreviewed.
Sequencing Do not bundle this with other Nova or framework changes. The change is a constraint widening with no feature surface, so it is a good candidate for a standalone low-risk PR — but it should land after the Laravel 11 upgrade is validated, not as part of it, so that if publishing behaviour regresses the cause is unambiguous.
Maintenance Low ongoing code maintenance, but non-trivial dependency-watch overhead: the package must track both Laravel and Nova majors, and Nova's release cadence is faster than Laravel's. Assign explicit ownership for "who watches this package's releases" — an unowned Nova add-on is how admin tooling silently falls out of support. Budget a small recurring review each Nova major. Given the single-maintainer profile, maintain a fork-and-pin fallback in the team's dependency policy.
Support No documented commercial support, no visible issue-triage SLA, one contributor of record. Internal support means internal expertise: at least two engineers should be able to modify the field/tool behaviour, because upstream turnaround is not dependable. Capture the integration in the team's runbook rather than relying on upstream docs.
Scaling Negligible infrastructure impact — this is request-path admin code, not a background worker or data pipeline. Watch only for query cost on Nova index screens if the package adds publish-state filters or eager-loaded scopes to large tables; verify index coverage on the published column. Public read paths should not be routed through the package's scopes unless that has been deliberately confirmed, since coupling content delivery to an admin add-on creates an avoidable scaling constraint.
Failure modes
composer update. Loud, caught in CI, low impact.Ramp-up A developer familiar with Nova can integrate and verify this in under a day; the package surface is small. The cost is in validation, not configuration: allow an additional day for a staging pass covering publish, unpublish, scheduled/embargoed states (if supported), index filters, and access-control interaction. Document the resolved version matrix and the smoke-test steps in the repo — that artefact, not the package, is what makes future upgrades cheap.
How can I help you explore Laravel packages today?