diff --git a/uad-landing.html b/uad-landing.html deleted file mode 100644 index d06b43d..0000000 --- a/uad-landing.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - UniFi Access Badge-In Dashboard - - - - - - - - -
-
Open Source ยท Self-Hosted ยท Docker
-

Real-Time Attendance
Powered by UniFi Access

-

Know exactly who badged in, when they arrived, and whether they were on time โ€” all from a clean live dashboard backed by your own infrastructure.

-
- See the Dashboard - Quick Install -
-
- - -
-
~5 min
Setup Time
-
0 ms
Cloud Dependency
-
6 hr
Auto User Sync
-
100%
Self-Hosted & Private
-
- - -
-
Live Preview
-
Your dashboard, today
-
Real names resolved from your UniFi Access controller, attendance status applied automatically against your custom cutoff time.
- -
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
#NameFirst Badge InLatest Badge InActor IDStatus
1Alex Rivera08:47 AMโ€” samea3f9c21bON TIME
2Jordan Lee08:53 AM02:14 PMb72e4d09ON TIME
3Morgan Chen09:12 AMโ€” samec8a1f355LATE
4Taylor Brooks08:58 AM01:07 PMd04b9e77ON TIME
5Casey Nguyen09:31 AMโ€” samee19d2c88LATE
6Riley Thompson08:41 AM03:22 PMf5c0a3b2ON TIME
7Drew Martinez08:59 AMโ€” same60e7f14cON TIME
8Sam Patel09:48 AMโ€” same71ba3d6fLATE
-
-
- - -
-
- -
Everything you need, nothing you don't
-
Built specifically for UniFi Access environments that want local, fast, and transparent attendance tracking.
- -
-
-
โšก
-

Real-Time Webhook Events

-

Receives access.door.unlock events from UniFi Access the moment a badge is tapped โ€” no polling, no delays.

-
-
-
๐Ÿ‘ค
-

Automatic Name Resolution

-

Translates raw UniFi actor UUIDs into real display names by syncing your user roster directly from the Access controller.

-
-
-
๐ŸŸข
-

ON TIME / LATE Status

-

Set any daily cutoff time. The dashboard automatically marks each person's first badge as ON TIME (green) or LATE (red).

-
-
-
๐Ÿ“…
-

Historical Date Browsing

-

All badge events are persisted in a local SQLite database. Browse any past date with the date picker โ€” your history, your server.

-
-
-
๐Ÿ”’
-

HMAC-Secured Webhooks

-

Every incoming event is verified with HMAC-SHA256 using your unique webhook secret, blocking spoofed or unauthorized payloads.

-
-
-
๐Ÿณ
-

Single Docker Container

-

One docker compose up -d command deploys Flask + SQLite. Runs on Unraid or any Linux host with Docker installed.

-
-
-
-
- - -
-
Get Started
-
Up and running in minutes
-
Requires a UniFi OS console running Access 1.9.1+, Docker, and a local network connection to your controller.
- -
-
-
1
-
-

Open Firewall Port 12445

-

Add a LAN IN firewall rule in UniFi Network โ†’ Settings โ†’ Firewall & Security allowing TCP 12445 from your subnet to your controller IP.

-
-
-
-
2
-
-

Generate a Developer API Token

-

In the UniFi Access app go to Settings โ†’ General โ†’ Advanced โ†’ API Token. Create a new token with all permission scopes and copy it immediately โ€” it's shown only once.

-
-
-
-
3
-
-

Clone & Configure

-

Clone the repo to your Unraid server, copy .env.example to .env, and fill in your controller IP, API token, and timezone.

-
-
-
-
4
-
-

Build & Start the Container

-

Run docker compose up -d --build. The container launches Flask on port 8000, creates the SQLite database, and immediately syncs your user roster.

-
-
-
-
5
-
-

Register the Webhook

-

From the container console, run the provided Python snippet to register your dashboard URL with UniFi Access for access.door.unlock events. Copy the returned secret into .env and rebuild.

-
-
-
-
6
-
-

Open the Dashboard

-

Navigate to http://<UNRAID-IP>:8000/. Pick a date, set your cutoff time, and watch attendance populate in real time as badges are tapped.

-
-
-
-
- - - - - - \ No newline at end of file