Base URL: /admin/staffing-* · Permissions live per-page below (module: staffing_employee, staffing_attendance, staffing_payroll, staffing_leave, staffing_loan, staffing_settings)
Staffing is the in-house HR module: employee records, attendance, payroll, and leave/loan requests. Every page shares the same sub-menu at the top — Overview · Employees · Attendance · Payroll · Leave Request · Loan Request · Settings.
URL: /admin/staffing-overview. A stat dashboard for the whole module:
URL: /admin/staffing-employees · Permission module: staffing_employee.
Searchable by name/email/mobile, filterable by Designation, and by a Status dropdown (Active is the default view; switch it to Terminated to see exited employees). Each row has View, Edit and Exit actions.
A single form split into five tabs:
Designationreq, Reporting Manager, Full Namereq, Mobile Number (unique), Email Addressreq (unique — used to log in), Password (defaults to Staff@123 if left blank), Personal Email, Job Location (dropdown, sourced from Settings → Office Location), PAN No., Marital Status, Nationality, Date of Birth, Religion, Joining Date — plus Bank Details (Bank/Account/IFSC/Branch) and full Permanent & Current Address blocks (with a "Same as permanent" checkbox to copy across).
One row per component defined in Settings → Salary Components. Enter an amount and mark it Applicable/Not Applicable for this employee; leaving an amount blank skips that component.
Repeatable rows: Degree (10th Standard / 12th Standard / Diploma / Graduation / Postgraduation / Doctorate), School/College, Passing Year, Marks.
Repeatable rows: Language, and a Spoken / Read / Written proficiency each rated Excellent, Medium, or Low.
Six fixed uploads — Education Certificate, Aadhaar Card, PAN Card, Signature, Experience Certificate, Photo — each with a "Choose" button; once saved, a "View" button opens the uploaded file. Below that, an Additional Documents table lets you record any extra document by Name + Number (no file, just a reference — e.g. a passport number).
All six documents upload directly to Amazon S3; the app only stores the returned URL.
Opening an employee (View) shows an identity card — name, status, designation, mobile, email, joining date, plus Update / Exit buttons — followed by its own five-tab sub-menu, scoped to that one employee:
From the detail page, Exit Employee asks only for an Exit Date (defaults to today). Once exited, the employee moves to the "Terminated" status filter and can no longer be exited again.
URL: /admin/staffing-attendance · Permission module: staffing_attendance.
URL: /admin/staffing-payroll · Permission module: staffing_payroll.
One run per calendar month (e.g. "September 2026"). Creating a run auto-generates one pending sheet per active employee, pre-filled with that month's working days.
Opening a run shows two tables — Approved Payroll (already built) and Pending Payroll (not yet built) — each with a live search box. Reviewing/building a sheet opens a dialog where you enter:
| Field | Effect |
|---|---|
| Working Days / Loss of Pay (LOP) / Leave With Pay | Attendance figures for the period. |
| Overtime | Added on top of gross earning. |
| Loan (deduction) | Manually entered this-period loan recovery amount. |
| Component amounts | One per Earning/Deduction component from Settings, editable per employee. |
The dialog live-calculates, and the server recomputes the same way on save:
Leave Deduction = (Basic Salary ÷ Working Days) × Loss of PayNet Pay = Total Earning + Overtime − Leave Deduction − Total Deduction − LoanOn the printed salary slip, the Leave Deduction line is shown reducing Gross Earning (not Gross Deduction) — so "Earning" already reflects the LOP cut.
A run moves through two stages:
URL: /admin/staffing-leave-request · Permission module: staffing_leave.
URL: /admin/staffing-loan-request · Permission module: staffing_loan.
URL: /admin/staffing-settings · Permission module: staffing_settings.
One form covering: three Payroll Approver slots, standard Check-in Start/End time window, Standard Working Hours, Standard Off Days per week, and yearly + monthly limits for each of the three leave types (Medical, Casual, Emergency) — these limits are what the Leave Request review balance check compares against.
Master list of pay components, each tagged Earning or Deduction (e.g. Basic Salary, HRA, Conveyance Allowance, Medical Reimbursement, Special Allowance under Earning; Professional Tax, PF, Income Tax under Deduction). This list drives the Salary Details tab on every employee and the payroll build dialog.
Simple name list (e.g. Software Engineer, HR Manager) used across Employee forms, filters, and the Overview breakdown.
Master list describing the ad-hoc document types staff may need to submit — feeds the "Additional Documents" table on the employee form.
A dated list of company holidays; the Overview page's "Upcoming Public Holidays" chip counts entries from today onward.