shayanys/iranian-date-picker
A Laravel package that adds an Iranian (Jalali/Persian) date picker to your forms. It offers a simple, ready-to-use picker for selecting Persian dates, making it easier to build localized apps and provide a natural date-selection experience for Persian-speaking users, with easy integration into Lara...
Architecture fit. The package is a Filament form-field plugin: a custom Field class that renders a Persian (Jalali) date picker on the front end and reconciles values with the Gregorian dates Laravel stores. Architecturally it slots into Filament's forms() schema as a drop-in replacement for DatePicker, so it does not disturb the underlying Eloquent model, migration, or validation layers. That containment is the main reason to consider it: the integration surface is a single field type plus a service provider/plugin registration, not a cross-cutting concern.
Integration feasibility. Mechanically low-friction — composer require, register the plugin in the PanelProvider, swap field imports. The real feasibility question is version coupling. The last release is April 2023, which predates Filament 3's stable release and long predates Filament 4. A Filament plugin of that vintage typically pins filament/filament and illuminate/* constraints that will conflict with a current install, so "does it install" is likely to fail before "does it work." Expect either a composer constraint override, a community fork, or a manual patch to the plugin's composer.json and namespace/API usage. Budget for this as a fork-and-vendor exercise, not a clean install.
Technical risk.
Filament::serving / asset registration. Filament's asset handling changed across majors, so the widget may render unstyled or non-functional even if PHP-side registration succeeds.Key questions to resolve before committing.
composer.json constraint support it? (Read the constraint first; this is a 5-minute disqualifier.)morilog/jalali, Carbon Jalali) or hand-rolled? Hand-rolled conversion is a red flag.Stack fit. Only relevant if the target is a Laravel + Filament admin/panel application serving an Iranian or Persian-speaking user base that needs Jalali input. If the app is not Filament, this package has no value — use a standalone Jalali conversion library plus a plain JS datepicker instead. Fit is narrow and high-specificity: exactly the right shape for the gap, exactly the wrong shape for anything adjacent.
Migration path. Treat it as an isolated, replaceable dependency:
acme/iranian-date-picker) so patches are not blocked on upstream.JalaliDate::make()) that returns the plugin field. Every form references the wrapper, never the vendor class directly — this makes a future swap to a different picker or a homegrown field a one-file change.date/datetime (Gregorian) with no schema change; verify by test that the stored value round-trips correctly.DatePicker usages incrementally, form by form, with visual QA in a Jalali locale.Compatibility. Pin Filament to the version the plugin actually supports, or pin the plugin to a fork compatible with your Filament version — do not attempt to run both unconstrained. Check PHP version constraints too; a 2023 package may cap at PHP 8.1/8.2. Confirm laravel/framework constraint against the app's version. If the app is on Filament 3+, assume you are maintaining the fork.
Sequencing.
Maintenance. The dominant cost. No release since April 2023, one maintainer, no dependent ecosystem to surface regressions. Realistically the team owns this code: budget for a fork, a patch cadence aligned to Filament majors, and a named owner. The codebase is small enough to audit in an afternoon, which caps the cost — but it also means every Filament upgrade carries a "does the date picker still work" checklist item indefinitely.
Support. GitHub issues only, no SLA, no commercial backing. Acceptable for an internal admin tool; not acceptable for anything customer-facing with date-entry SLAs. Internal documentation of the patched delta is mandatory so the next engineer isn't reverse-engineering why the vendor package differs from upstream.
Scaling. Negligible runtime scaling concern — it is a client-side widget with a per-request conversion cost measured in microseconds. The scaling risk is organizational: every additional Filament panel multiplies the number of form fields depending on an unmaintained fork, and the blast radius of a Filament upgrade grows with it. RTL/localization requirements (Persian numerals, right-to-left layout, Iranian holidays) may need extension beyond what the package provides.
Failure modes.
Ramp-up. For a developer already fluent in Filament, the field API is a sub-hour ramp; the real learning is Jalali conversion semantics, timezone boundaries, and Persian date formatting conventions — call it 1–2 days to be confident, plus the fork-and-patch overhead if the spike lands on a Filament version mismatch. The 0.89 opportunity score is a genuine market signal (Filament + Iranian locale is underserved) but should be read as "build or fork something here," not "adopt this package as-is." Recommendation: proceed only with an internal fork and a conversion test suite in place; otherwise, implement a thin custom field over a maintained Jalali library and accept roughly the same effort with materially less maintenance risk.
How can I help you explore Laravel packages today?