Case study · 2026

SKUD

Three branches, fifteen scanners, one number that has to be right before the 9am standup. SKUD turns every badge swipe, fingerprint and face scan into a single attendance record — no phone calls to branch managers required.

199
employee records
3
branches
15
access devices
600+
logged events
hrms.islomjon.uz/dashboard
SKUD dashboard — attendance counters, a seven-day attendance curve and per-branch breakdowns across three branches

Dashboard · attendance across all three branches, in Uzbek

Dashboard · attendance across all three branches, in Uzbek

Attendance isn’t a report. It’s a daily argument, until the data settles it.

A single office can track lateness by memory. Three branches with their own card readers, fingerprint scanners and face terminals cannot — someone is always missing a device log, and payroll ends up deducting on a manager’s word rather than a timestamp. SKUD exists to make the timestamp win.

Problem

Growing multi-branch teams track attendance by hand, on disconnected per-branch hardware. Nobody can answer “who is late today” without phoning each branch, and deductions end up as guesswork.

Approach

Every access device — card, fingerprint, face, camera — writes to one event log. Attendance, lateness, early leave and absence are computed from that log, branch by branch, never typed in by hand.

Outcome

A live dashboard spanning 3 branches, 199 employees and 15 devices, with department and branch breakdowns, a latecomer leaderboard, and a payroll-fund figure that moves with real attendance.

Access control log

Every door is a timestamp

Card readers, fingerprint scanners and face-recognition terminals all feed one table: who, at which door, in which direction, and whether it succeeded — filterable by branch, entry point and result, down to the second.

  • Named entry points per branch — server room, parking, back door, main entrance
  • A Kirdi / Chiqdi direction and a pass/fail result on every single scan
  • Search by employee name, or stack branch, point and outcome filters at once
hrms.islomjon.uz/access-log
SKUD access control log — filterable entry and exit events

Access control log · every entry and exit, filterable by branch and result

Access control log · every entry and exit, filterable by branch and result

Device fleet

Four kinds of hardware, one status page

Card readers, fingerprint scanners, face-recognition terminals and CCTV cameras across three branches are tracked as first-class records — IP address, last activity, live online/offline state — not as a silent source the attendance numbers depend on.

  • The dashboard's 12/15 active tile reads straight from this table
  • Every device carries its own IP address and last-seen timestamp
  • Filterable by type, branch and status the moment one drops offline mid-shift
hrms.islomjon.uz/devices
SKUD device fleet — card readers, scanners and cameras by branch

Device fleet · 15 devices across three branches, with live status

Device fleet · 15 devices across three branches, with live status

One log, every number

Attendance, computed — not counted

Nothing on the dashboard is typed in. A swipe at the parking gate and a face scan at the main entrance land in the same event table, and the 93% attendance figure, the latecomer leaderboard and the payroll fund are all read back out of it.

    01

    Device writes an event

    Card, fingerprint, face or camera — each scan records a person, a door, a direction and a result.

    02

    Event becomes a day

    First entry and last exit collapse into one attendance row: on time, late, left early or absent.

    03

    Days become the dashboard

    Branch, department and payroll tiles aggregate those rows live — no nightly export, no spreadsheet.

Modules

Seven areas, one grammar

Each area reads the same way: a filterable register, a create/edit flow and a detail view. Learn one screen and the other six follow.

Organization

Branches, departments, positions, the employee register and the org chart, kept in sync across all three branches.

199 employees

Recruitment

A hiring pipeline for open positions, kept separate from the active employee register until an offer is signed.

Attendance

The daily and per-employee record — on time, late, left early or absent — computed from device events rather than entered.

93% average

Access & time

The access-control log, work schedules, vacation requests and the device fleet all live under one section.

600+ events · 15 devices

Operations

Payroll, company assets and staff documents — the parts of HR that touch money and paperwork.

1.9 bln so'm fund

Analytics

Cross-branch and cross-department analysis for anything the dashboard tiles do not already answer.

Settings

Branches, roles and system preferences — administered without leaving the app.

Under the hood

Decisions the demo is built on

The parts a branch manager never sees on the dashboard, and feels the moment they are missing.

Localization

Uzbek by default, not bolted on

Ant Design's components and dayjs date parsing run in the uz-UZ / uz-latn locale, so date pickers, pagination copy and empty states speak Uzbek natively.

  • Not an English template with a translation file taped on top
  • Dates, numbers and week starts follow local conventions
  • Branch and department names stay in the language the staff use
Performance

Charts only ship where they are used

Recharts loads on the dashboard route and nowhere else, so the employee register, the device list and the access log stay lighter than the screen that actually draws graphs.

  • Route-level code splitting rather than one bundle for everything
  • TanStack Query caches registers between navigations
  • Typechecking runs in the production build, so a type error fails the deploy

Stack

A React admin stack, tuned for one market

Ant Design for the data-heavy surfaces, Tailwind for everything bespoke around them, and Vite’s newer Rolldown pipeline adopted while it is still opt-in.

  • React
  • TypeScript
  • Vite (Rolldown)
  • React Router
  • Ant Design
  • TanStack Query
  • Recharts
  • Tailwind CSS
  • Motion
  • Hugeicons
  • dayjs
  • uz-UZ locale

Need a system your team actually checks every morning?

SKUD is one example. I build internal tools, dashboards and data-heavy interfaces — from the first wireframe to the deployed build.