PHPackages                             athwari/filament-zkteco-adms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. athwari/filament-zkteco-adms

ActiveFilament-plugin[Utility &amp; Helpers](/categories/utility)

athwari/filament-zkteco-adms
============================

Filament v5 plugin implementing the ZKTeco ADMS protocol for biometric attendance devices.

v1.0.1(1mo ago)04↓50%[2 PRs](https://github.com/athwari/filament-zkteco-adms/pulls)MITPHPPHP ^8.2|^8.3|^8.4CI passing

Since Jun 27Pushed 1mo agoCompare

[ Source](https://github.com/athwari/filament-zkteco-adms)[ Packagist](https://packagist.org/packages/athwari/filament-zkteco-adms)[ GitHub Sponsors](https://github.com/athwari)[ RSS](/packages/athwari-filament-zkteco-adms/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (2)Dependencies (22)Versions (5)Used By (0)

Filament ZKteco ADMS
====================

[](#filament-zkteco-adms)

[![Latest Version on Packagist](https://camo.githubusercontent.com/2bb27468904bf7e0dc8c0e6cbbf754ef3c62b43ad46549ebab7c419b12eda489/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f617468776172692f66696c616d656e742d7a6b7465636f2d61646d732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/athwari/filament-zkteco-adms)[![GitHub Tests Action Status](https://camo.githubusercontent.com/4c2cfcc51dc7c23e9579d00189332513e5f3b23f78d77d3078cad2be9b8e58d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f617468776172692f66696c616d656e742d7a6b7465636f2d61646d732f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/athwari/filament-zkteco-adms/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/63783cbc7bb3e8f2cda284f78c7d03c88e67e123ac89e74355180f5be2968047/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f617468776172692f66696c616d656e742d7a6b7465636f2d61646d732f6669782d7068702d636f64652d7374796c652e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/athwari/filament-zkteco-adms/actions?query=workflow%3A%22Fix+PHP+code+style%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/ca9c0a4a393bb7c904e09f1847c7967e5c71c837d8ee6623b117bc6b801bd9ec/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f617468776172692f66696c616d656e742d7a6b7465636f2d61646d732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/athwari/filament-zkteco-adms)

This Filament v5 plugin provides the admin UI for ZKTeco ADMS and owns tenancy behavior for the ZKTeco domain.

It is built on top of athwari/laravel-zkteco-adms (core backend logic) and adds:

- Filament resources, pages, and widgets
- Tenant-aware model behavior for devices and users
- Publishable tenant column migration for zkteco devices and users tables
- Tenant-scoped resource queries for attendance logs and device commands

Features
--------

[](#features)

- Device, user, attendance log, and device command resources
- Dashboard and stats widgets
- Plugin-owned multi-tenancy settings via filament-zkteco-adms.multi\_tenancy
- Plugin model overrides for zkteco-adms.models.device and zkteco-adms.models.user
- Normalized attendance reporting using `occurred_at`, while retaining the device-local `recorded_at`
- Publishable tenant migration with a generated timestamp

Installation
------------

[](#installation)

Install the core package and this plugin:

```
composer require athwari/laravel-zkteco-adms athwari/filament-zkteco-adms
```

Register the plugin in your Filament panel provider:

```
use Athwari\FilamentZktecoAdms\FilamentZktecoAdmsPlugin;
use Filament\Panel;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(FilamentZktecoAdmsPlugin::make());
}
```

Configuration
-------------

[](#configuration)

Publish the plugin configuration file:

```
php artisan vendor:publish --tag="filament-zkteco-adms-config"
```

Main config keys in config/filament-zkteco-adms.php:

- timezone\_options
- multi\_tenancy.enabled
- multi\_tenancy.tenant\_model
- multi\_tenancy.tenant\_column
- multi\_tenancy.tenant\_relationship
- filament.navigation\_group
- filament.navigation\_sort

Publish the core and plugin migrations, then run them:

```
php artisan vendor:publish --tag="zkteco-adms-migrations"
php artisan vendor:publish --tag="filament-zkteco-adms-migrations"
php artisan migrate
```

Migration timestamps are generated when the files are published. Publish the core migrations first so the ZKTeco tables exist before the plugin adds tenant columns.

### Device Timezones

[](#device-timezones)

The device form uses a searchable timezone selector. By default, an empty `timezone_options` configuration exposes every timezone supported by the PHP runtime, including legacy aliases:

```
'timezone_options' => [],
```

Use an indexed list to restrict the selector while displaying the timezone identifiers unchanged, or an associative array to provide custom labels:

```
'timezone_options' => [
    'UTC',
    'Asia/Aden' => 'Yemen',
],
```

Invalid identifiers are ignored. If no configured identifier is valid, the selector falls back to the complete PHP runtime list. New devices default to `zkteco-adms.default_timezone` when available, then `UTC`, then the first configured option.

Usage
-----

[](#usage)

After registration, resources and pages are discovered automatically. By default, resource slugs are:

- zkteco/devices
- zkteco/users
- zkteco/attendance-logs
- zkteco/device-commands

The final URL depends on your panel path prefix.

Attendance reports, date filters, sorting, and dashboard statistics use the normalized `occurred_at` timestamp. The original `recorded_at` value remains visible as the device-local timestamp for backward compatibility.

### Tenancy Ownership

[](#tenancy-ownership)

Tenancy for the ZKTeco domain is owned by this plugin.

When multi\_tenancy.enabled is true:

- ZktecoDevice and ZktecoUser models are auto-assigned to the active Filament tenant on create
- Attendance log and device command resources are scoped through each record's related device tenant
- Core config keys zkteco-adms.models.device and zkteco-adms.models.user are overridden to plugin models

Testing
-------

[](#testing)

Run the test suite with:

```
composer test
```

Additional useful scripts:

```
composer test-coverage
composer analyse
composer format
```

Architecture Boundary
---------------------

[](#architecture-boundary)

- athwari/laravel-zkteco-adms: protocol, parsing, command and persistence core
- athwari/filament-zkteco-adms: Filament UI and tenancy ownership

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security
--------

[](#security)

Please review [SECURITY](SECURITY.md) if you discover a vulnerability in this package.

Credits
-------

[](#credits)

- [Athwari](https://github.com/athwari)
- [All Contributors](https://github.com/athwari/filament-zkteco-adms/graphs/contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [LICENSE.md](LICENSE.md) for more information.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance91

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

2

Last Release

42d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1128182?v=4)[athwari](/maintainers/athwari)[@athwari](https://github.com/athwari)

---

Tags

laravelfilamentzktecoattendancebiometricathwariadms

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/athwari-filament-zkteco-adms/health.svg)

```
[![Health](https://phpackages.com/badges/athwari-filament-zkteco-adms/health.svg)](https://phpackages.com/packages/athwari-filament-zkteco-adms)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3915.5k](/packages/rawilk-profile-filament-plugin)[backstage/mails

View logged mails and events in a beautiful Filament UI.

16429.7k](/packages/backstage-mails)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

85240.3k9](/packages/stephenjude-filament-two-factor-authentication)[stephenjude/filament-feature-flags

Filament implementation of feature flags and segmentation with Laravel Pennant.

123204.9k1](/packages/stephenjude-filament-feature-flags)[marcelweidum/filament-passkeys

Use passkeys in your filamentphp app

6758.2k2](/packages/marcelweidum-filament-passkeys)[marcelweidum/filament-expiration-notice

Customize the livewire expiration notice

94160.6k6](/packages/marcelweidum-filament-expiration-notice)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
