Self-hosted staff leave & PTO — accruals, working-day requests, approvals, and live balances.
For most small teams, "how much leave do I have left?" is a question only a shared spreadsheet can answer — and it is usually wrong. Accruals drift, half-days get miscounted, public holidays land inside a leave request, and two people book the same week off without anyone noticing. HR platforms fix all of it, then charge per employee, every month, forever.
Each employee has a manager, a start date, and start-date-prorated accrual, so someone who joined in April earns the right fraction of the year's entitlement.
Annual, sick, unpaid, or custom leave types, each with an accrual rule (annual up-front or monthly) and a carryover cap that never compounds across the leave-year boundary.
A company holiday calendar and a configurable weekend are excluded from every working-day count, so a request that spans a bank holiday charges the right number of days.
Working days are computed automatically, overlaps and double-requests are caught, half-days are supported, and each request runs a pending to approved or rejected workflow with approver and timestamp.
Carried-in + accrued − taken − pending, as of any date, kept to the hundredth of a day in integer centidays — so a full year of monthly accrual lands exactly on the entitlement with zero float drift.
A month grid of who is off with weekends and holidays shaded, a dependency-free per-employee PDF leave statement, and a formula-injection-hardened CSV export.
Checkout isn't open yet. Leave your email and we'll send one note the moment Leavora — Staff Leave & PTO Tracker (PHP + MySQL, Self-Hosted) can be purchased — nothing else.
2-minute web installer, plain PHP 8 + MySQL (or SQLite for a trial), no Composer or build step — Docker image included.
No — it tracks leave entitlement, requests, approvals, and balances only. It never calculates wages, touches cards or bank rails, or initiates a payment, so it has zero payroll and zero payment surface.
Exact by construction: leave is stored in integer centidays (a hundredth of a day), so half-days and monthly accrual are precise and a full year's accrual lands exactly on the entitlement. The shipped 147-assertion suite covers accrual, carryover, and both DST transitions.
Yes — the leave year is configurable (calendar or a fiscal start such as April 1), and carryover is capped at that boundary.
Yes — requests can be half-days, and a company holiday list plus your configured weekend are excluded from every working-day count.
You get the full PHP source and your data lives in one database you own — nothing phones home, nothing expires.