athwari/filament-zkteco-adms
Filament ZKTeco ADMS connects ZKTeco biometric attendance devices to your Laravel Filament admin panel. Sync users, attendance logs, and device commands over the ADMS protocol, with ready-made resources for managing devices and records.
Architecture fit
athwari/laravel-zkteco-adms handles ADMS device ingestion, while filament-zkteco-adms provides the administrative/reporting surface. This is a sound split — protocol concerns stay out of the presentation layer.occurred_at (normalized, used for reporting, sorting, filtering, dashboard stats) and recorded_at (original device-local, retained for audit). This is the correct pattern for attendance data, where payroll cutoffs and day boundaries must be computed in a consistent timezone while preserving what the device actually reported.Integration feasibility
filament-zkteco-adms v1.0.1 requires athwari/laravel-zkteco-adms >= v1.0.1. Both must move together.Technical risk
occurred_at populated. Without a documented backfill or migration-time recompute, historical dashboards will read null or stale values while new rows populate correctly — the worst kind of partial-correctness bug.occurred_at, which needs appropriate indexing to avoid table scans on high-volume attendance tables.Key questions
occurred_at, and is it idempotent?recorded_at (audit integrity) while permitting occurred_at correction?occurred_at?Stack fit
Migration path
php artisan vendor:publish --tag=filament-zkteco-adms-migrations and diff the generated stub against the previously auto-loaded migrations — treat the output as a code review artifact, not a blind command.migrate on staging, then execute any backfill for occurred_at before enabling the new dashboards.Compatibility
filament-zkteco-adms ^1.0.1 + laravel-zkteco-adms ^1.0.1) to prevent a partial upgrade that satisfies one package's constraints but not the other's timestamp expectations..php.stub migrations from both packages hints that consuming applications with their own test suites may need equivalent handling for package-provided stubs.Sequencing
occurred_at is verified for a full day boundary in at least two device timezones (including one non-UTC).Maintenance
Support
occurred_at and recorded_at. Label both clearly in the Filament UI (e.g., "Normalized time" vs "Device time") and surface the device timezone alongside.Scaling
(device_id, occurred_at) or equivalent before volume ramps; consider partitioning by month once row counts reach the millions.Failure modes
occurred_at. Loud, easy to catch.Ramp-up
How can I help you explore Laravel packages today?