P-11 · BUILD / PROJECT · 2026 ACTIVE

HRDex

A Singapore-first workforce operating system: HR, leave, claims, payroll and approvals, built around who is allowed to see what.

STACK: Next.js 15TypeScriptPrismaPostgreSQLZodVitest

What it is

HRDex is a workforce operating system built for a Singapore employer: employee self-service, manager approvals, core HR, leave, claims, payroll preparation, recruitment, goals, learning, documents, announcements and reporting, all under one audit history. Most HR systems treat permissions as an afterthought bolted onto a role dropdown. HRDex treats them as the actual product.

How it works

The trust anchor is a creator identity owned by the database, not a role label. Only that creator can appoint or replace the main administrator, and the moment a new one is appointed, the previous delegate loses reserved authority immediately. Everything else builds on that: server-side effective permissions combine role defaults with per-user grants and denials, each one recorded with a grantor, and record access is relationship-aware, so a manager’s queries are scoped to direct reports and nothing beyond them.

Employee directory, scoped by relationship rather than by role alone

Leave, claims and flexible-work requests all run through the same current-step approval engine rather than three separate ones. A request has one current owner at a time, only that owner (or an eligible actor for that step) can act on it, requesters cannot approve their own request, and a creator or main administrator override requires a recorded reason. Leave sits on an immutable ledger with overlap and pending-balance protection, plus a scenario forecast showing approved future leave, days on hold, days available to book, and the balance projected if everything pending gets approved.

Leave balances showing days available, days held pending, and the projected figure

Details worth pointing at

Sensitive fields (NRIC/FIN, bank account numbers) are encrypted at rest, with only the last four digits kept in clear for search, and salary is masked from roles without permission to see it. Claims carry monthly caps and reimbursement only counts once it carries a recorded payroll batch reference. Payroll moves through snapshot, review, approval and lock, and employees only ever see locked snapshots, through a private, year-filterable payslips hub. It is also an installable PWA: the service worker caches nothing but the public icon set, and every authenticated page, report and payslip stays network-only rather than sitting in the cache.

Where it stands

Feature-complete for a single organisation: HR, time, claims, payroll, recruitment, learning and reporting all run end to end against seeded demo data. What is left is the less interesting part before real employee records go anywhere near it: the CPF and IRAS statutory tables are still placeholders pending independent verification, receipt storage needs to move off local disk in production, and the multi-tenant version does not exist yet. Built, and still being built.