aloko/nova-persian-datepicker
aloko/nova-persian-datepicker adds a Persian (Jalali) date picker field to Laravel Nova, making it easy to select and display dates in the Persian calendar within your Nova resources with minimal setup.
Architecture fit. The package is a Laravel Nova field extension — it hooks into Nova's Field contract and ships a Vue component that swaps the native date picker for a Jalali (Shamsi) calendar. That is the correct and only sensible architecture for this problem in Nova; there is no competing integration pattern. The design pattern is well-trodden (Nova's nova:field scaffolding), so anyone who has built or consumed a Nova field will recognize the shape immediately. The package does not touch application domain logic, Eloquent models, or API layers, which keeps blast radius small.
Integration feasibility. Mechanically trivial: composer require, register or rely on package discovery, then add the field to a Nova resource. The real feasibility question is not "can we install it" but "will it survive Nova's release cadence." Nova ships major versions roughly annually with meaningful breaking changes to the field API and frontend stack; a package with 20 stars and 0 dependents has almost certainly not been hardened against Nova 5-era changes. Expect to verify version constraints in composer.json before committing. Budget an afternoon for a throwaway spike rather than trusting the README.
Technical risk. Ranked:
Asia/Tehran need consistent handling. Iran abolished DST in 2022, which removes the worst historical edge cases, but boundary-of-day behavior still needs a test.Severity is moderate because the failure surface is confined to an admin UI, not a public API — but "confined to admin" is cold comfort when the admin is where orders, subscriptions, and compliance dates get entered.
Key questions.
Date field — does existing data render correctly?DateTime variants, or only the base Date field?Stack fit. Clean. Laravel + Nova shops add fields via Composer and a one-line resource change; nothing else in the stack is implicated. No database migrations, no config publishing required in the common case, no service provider conflicts expected. It slots into the existing Nova ecosystem orthogonally — it neither depends on nor constrains the rest of your application.
Migration path. The migration is conceptual, not schema-level: you are changing the presentation layer of a date column, not its storage. Steps:
DATE/DATETIME). No backfill should be necessary — but verify by opening a known record and confirming the displayed Jalali date maps to the stored Gregorian value.Date::make('...') with the Persian field on a single resource in a staging environment.If any resource stores dates as Jalali strings (legacy homegrown tooling), stop and backfill before proceeding.
Compatibility. Three axes to check and pin: Nova major version, PHP version (Nova's own floor moves), and the underlying JS/Vue datepicker. Pin the package version explicitly in composer.json — do not float on ^1.0.
Sequencing.
Maintenance. This is the dominant cost and it is not zero. A single-maintainer package with no dependents means you are effectively the maintainer of record for your organization's copy. Plan for:
The saving grace: the codebase is small and the domain problem is well-bounded, so the fork is a low-friction fallback rather than a hostage situation.
Support. Community-only, best-effort, no SLA, and a maintainer whose attention cannot be assumed. Escalation path is: patch your fork → reimplement in-house (1–3 days) → swap packages. Any of these is viable; none is free. Do not place this on a path where an outage blocks revenue-critical admin workflows without a documented workaround.
Scaling. Effectively a non-issue. This is a browser-rendered field component; it imposes no server load, no query overhead, and no concurrency concerns. Rendering cost is one small JS bundle per admin page. There is no scaling dimension on which this package can become a bottleneck. The scaling risk is entirely organizational — how many resources adopt it and whether the fork is kept current.
Failure modes. In descending order of impact:
Ramp-up. Low for any Laravel developer: 1–2 hours to install, wire, and understand the field. The genuine learning curve is domain knowledge — Jalali calendar mechanics, the Gregorian/Jalali boundary, and why "just format the date" is the wrong instinct here. That knowledge should live with one or two people and be written down, because the failure mode is a well-meaning developer "fixing" the formatting and quietly breaking persistence. Onboarding cost is small; the cost of an under-informed change is not.
How can I help you explore Laravel packages today?