gerenuk/filament-utc-dts
A Filament package for UTC date-times that stores timestamps in UTC while displaying them in the user’s local timezone. Includes form fields and table columns to keep date/time handling consistent across Laravel admin panels.
Architecture fit This is a presentation-layer Filament plugin: it registers a render hook into a panel's topbar and injects a Blade view (plus a small amount of JS/CSS) that displays the current UTC time. It carries no migrations, no models, no jobs, no config surface worth governing, and no coupling to domain logic. That makes it architecturally "free" — it can be added to any Filament panel without touching the application's data model, service layer, or deployment topology. The relevant architectural question is not whether it fits, but whether the team's operating convention actually requires a persistent UTC reference in the admin UI (log correlation, incident timelines, SLA deadlines, cross-region handovers). If yes, placing it exactly where operators already are — the panel chrome — is the right layering decision.
Integration feasibility
High. The expected integration is a single ->plugin(UtcDtsPlugin::make()) call in the relevant PanelProvider, a composer require, and an asset publish/build step. Expect under a day of engineering including review. The package is MIT-licensed, which removes legal friction. The main feasibility unknowns are Filament major-version support and whether the clock is server-derived or browser-derived — the latter matters because a browser clock drifts and is user-manipulable, which undermines the indicator's value for audit or SLA conversations.
Technical risk Blast radius is small and reversibility is near-total, which caps the downside. The real risk is supply-side, and the signals are weak: 5 stars, 0 dependents, a single release dated 2025-03-10, and a low opportunity score. That is a one-maintainer package with essentially no community validation or production telemetry. Two risks follow: (1) abandonment or no Filament 4 readiness, leaving the team to fork or drop it; (2) authenticated-surface injection — any package rendering into an admin panel should be reviewed for inline JS behavior, external CDN/asset calls, and whether it performs a network request (e.g., to a third-party time API), which would be a data-egress and availability concern. Both are cheap to assess because the code surface is tiny.
Key questions
wire:poll) or tick purely client-side — and what is the per-session cost at our concurrent-admin peak?Stack fit Best fit is a Laravel 10/11/12 application running Filament 3.x with one or more admin panels, particularly where the operator population is distributed across timezones or where logs, queues, and external providers are recorded in UTC. Poor fit — or at least unjustified — where the panel is internal-only, single-timezone, or already surfaces unambiguous UTC timestamps in the data tables; in that case the widget adds visual noise rather than decision value.
Migration path
There is no data migration. The change is additive and configuration-only: register the plugin, publish and review any assets, commit, rebuild. Rollback is symmetric and trivial — remove the plugin line, composer remove, rebuild assets, redeploy. No schema, no backfill, no state to unwind, which is why this can be trialed with essentially no change-management overhead.
Compatibility
Pin the version explicitly and record it in the lockfile alongside the Filament constraint; with a single 2025 release there is no track record of tracking Filament majors, so treat every Filament upgrade as a re-validation event. Verify Tailwind/asset pipeline compatibility in a staging build, and check for render-hook ordering interactions if other plugins also modify the topbar. Confirm PHP and Laravel constraints in composer.json against the target application before scheduling.
Sequencing
aria-hidden or a coarser update cadence if so).Maintenance Steady-state maintenance is near zero — no runtime jobs, no storage, no scheduled work. The carrying cost is governance, not operations: an owner must re-validate it on each Filament major upgrade. Because the code surface is a view and a few lines of registration, the fallback is straightforward — vendor the view into the app or replace it with a two-line custom render hook, which is a half-day of work and eliminates the dependency entirely. Budget roughly 0.5 engineer-days per year plus upgrade-triggered checks.
Support There is no vendor SLA, no support contract, and a single maintainer behind a company-branded GitHub org. Internal support therefore reduces to "we own it." That is acceptable at this criticality level, but it should be recorded explicitly so nobody files a ticket expecting upstream responsiveness. Security patching is a manual, periodic review rather than a dependabot-driven flow.
Scaling The footprint is per-admin-page-render, not per-request. If the clock is client-side it is effectively free and does not touch the application tier; if it polls, cost scales with concurrent admin sessions and should be load-checked once at projected peak before wide rollout. It has no interaction with queue depth, database load, or horizontal scaling of the application tier.
Failure modes
Ramp-up Developer ramp-up is measured in minutes — one plugin registration and a source read. End-user ramp-up is zero from an interface standpoint but nonzero from a behavior standpoint: the indicator only pays off if the team adopts a UTC-first convention for timestamps in incidents, logs, and handovers. Pair the technical rollout with a short written norm and a mention in the on-call runbook; otherwise this is a clock, not a control.
How can I help you explore Laravel packages today?