The problem
Employee data, requests and internal news were spread across channels, many migrant workers could not read Thai, and every internal system needed its own login.
What I built
Extended both the Angular PWA and the ASP.NET Core API into the employee hub: leave, approvals, payslips, news and IT articles, with an attribute-based permission model that other company systems reuse.
Key features
- Leave with multi-level approval; quota updates automatically, holidays are excluded and quota cannot go negative
- Working-time summary: late, absent and incomplete scans
- Holiday-work, compensatory-leave and shift-swap requests
- Payslips and co-op savings inside the portal
- Meeting-room booking with Telegram alerts through n8n
- Five UI languages (Thai, English, Myanmar, Khmer, Lao) and LINE account linking through LIFF
Under the hood
- Attribute-based access control in the UI (directive, pipe, guard) and the API (policy endpoint), so other systems share one policy
- IIS deploy workflow that copies only changed files, compares them byte by byte, and retries while IIS holds a lock
- Upgraded Angular one major version at a time from 11 to 21, and built an MCP server that lets Claude draft and publish IT articles