From annual leave accrual to the night premium, from the 270-hour overtime cap to mobile GPS check-in — seniority, age, weekly rest and public holidays are built into the code. The system blocks unlawful leave, overtime or balances right from the start.
The 13 leave types defined in the Labour Law come ready with day counts, pay status and document requirements; each tenant adds its own custom types without limit. Every type's legal reference is baked into the code.
Alongside the ready-made types, you can add leave types specific to your company (e.g. CUSTOM_TRAINING): name, category (statutory/paid/unpaid), default days, whether it is paid, document/reason requirements and a legal reference. Preset keys are reserved — custom types cannot clash with them; deletion is a soft-delete, so the audit trail is kept.
Annual leave entitlement is calculated by seniority and age in a single pure function; the day count excludes weekends and public holidays. Accrual does not begin before one year is completed.
Unused annual leave carries over to the following year; a carryover cap can be set by company policy. The manager dashboard shows every employee's balance in a single table with risk alerts.
Leave remaining from the previous year is added to the new year's accrual; missing balance rows are created in bulk.
Shows managers risky balances alongside the days left until year-end.
A balance sync runs at the start of the year; export is ready for audit and planning.
A single validation pipeline: overlap, balance, reservation and authorisation checks run through a shared util used by both leave.routes and the portal — both paths apply the same rules.
Unpaid leave (UNPAID) does not reduce the balance — entitlement is preserved. The balance check runs only for entitlement-consuming types; if a balance row is undefined, the check is at worst skipped — the request is not silently blocked.
The holiday calendar is kept both platform-wide and tenant-specific; it is taken into account automatically in day calculations and the timesheet breakdown.
All holiday records are defined by date, name and type; a half day can be flagged.
Global holidays apply to all tenants; only the platform administrator can edit them.
Day, night, rotating and flexible shifts are defined with start/end/break and a night premium rate; they are scheduled through assignment, bulk assignment and rotation.
From clock-in/clock-out times, normal / overtime / night / holiday minutes are broken down automatically. A pure, deterministic engine — legal constants and premium rates are baked into the code; overnight roll-over is calculated correctly.
When times and dates are entered, the full breakdown is previewed live without writing to the DB; the same shift/date can be entered in bulk for 500 employees in a single call; from an employee's shift assignment, worked minutes and overtime are calculated automatically. An overnight shift (e.g. 22:00→06:00) is measured correctly by adding the hour roll-over.
Mobile check-in with a GPS geo-fence, biometric device CSV import and an offline-resilient queue — distance is computed on the server, and KVKK (Turkey's data protection law) boundaries are built into the code.

Location is verified on the server with Haversine against the workplace centre + radius.
Records are not lost even if connectivity drops in the field; the server keeps personal data to a minimum.
Automatic data pull from hardware Time & Attendance devices is still at the skeleton stage. What is sellable and genuinely working today: mobile GPS/QR/face check-in and biometric device CSV import. "Face recognition" happens on the device itself; the server only records which method was used — biometric data (face/fingerprint) stays on the device.
In the demo, let's run a week of timesheets on your own shift pattern — overtime, night premium and holiday premium, seen with your own eyes.