Pinaly Power ERP
Workforce, safety and payroll for a multi-site industrial operator.
- Client
- Pinaly Power
- Through
- Techindika
- Role
- Full-stack developer
- Focus
- Frontend, in a team
- Timeline
- Aug 2025 to Apr 2026
- Code
- PRJ-01 · 2026

The problem
Pinaly Power operates across several industrial sites. HR records, payroll, safety documentation, training and asset tracking each lived in a different tool or spreadsheet.
That fragmentation meant approvals waited on email threads, site managers had no shared view of who was on site, and compliance evidence had to be assembled by hand before every audit.
The build
We built a single ERP covering HR, payroll, safety, training and assets, with access scoped by role. Super admins see every site, site admins see their own, employees get a self-service portal.
Payroll runs through a multi-phase approval flow backed by Bull queues on Redis, so nothing is paid without sign-off and long runs never block the UI. Safety modules (HIRA, JHA, SOP, JEP, incident reports with CAPA, audits) share one activity log. Training registration happens through QR codes on site.
The screen I spent longest on was the employee profile: thirteen tabs of related data that had to stay fast, stay consistent after edits, and support bulk import for onboarding hundreds of workers at once.





Scope
- 13-tab employee profiles
- Bulk employee import
- Attendance tracking
- Employee self-service portal
- Multi-phase payroll approval
- Expense claims
- Asset and material management
- Work orders
- HIRA, JHA, SOP and JEP modules
- Incident reporting with CAPA
- Audits and compliance tracking
- QR-code training registration
Stack
- Next.js 15
- React 19
- Tailwind CSS 4
- shadcn/ui
- dnd-kit
- Express
- Mongoose
- Bull
- Redis
- AWS S3