Skip to main content
2025

TaskForce HRM

A multi-tenant HR platform covering the full employee lifecycle — recruitment and onboarding through leave, org structure and offboarding.

Showcase of TaskForce HRM

Role

Full-Stack Developer (frontend-focused)

Client

Concept Dash (product: TaskForce / TF Engineering HRM)

Duration

Jan 2025 – Dec 2025 (repo lifespan); Aman active Oct – Dec 2025

TaskForce HRM is the human-resources product inside TaskForce, a business-management SaaS built at Concept Dash. It replaces the scattered spreadsheets and email chains that HR teams use to run hiring, onboarding, leave and exits, and does so for multiple client organisations from one deployment. The codebase is split into two repositories that serve a single product: a Next.js 15 App Router frontend (~430 TypeScript files) and an Express/PostgreSQL API (~140 modules), both deployed to AWS Elastic Beanstalk through Jenkins pipelines with separate staging and production environments.

Tenant isolation is the architectural spine. A JWT auth middleware resolves the caller's email against a central CRM database, derives a per-tenant PostgreSQL schema (`schema_${tenantId}`), and attaches it to the request along with that tenant's document-storage configuration — so the same controllers serve either AWS S3 or a client's own SharePoint site via the Microsoft Graph API, depending on the tenant record. Around that sit a recruitment pipeline with a public career page and multi-strategy resume parsing (pdfjs, mammoth and officeparser feeding rule-based extractors), Microsoft Teams interview scheduling through Graph, node-cron workers that send birthday and work-anniversary mail across Indian and Canadian timezones, and an asynchronous scoring worker for an employee personality assessment.

Aman's contribution was concentrated in two modules he built end to end across both repositories. The offboarding module models resignation as a state machine — an employee files a request, it moves through manager and HR approval, and either branch can divert into a retention flow initiated by whichever role holds it at that moment, or terminate. A separate HR-initiated termination path with approve and reject actions was layered on top of the same records. The visible complexity is in the status stepper: rather than hard-coding a fixed set of steps, it derives the step list at render time from the request's current status and its status history, substituting a 'Retention Initiated by Manager/HR' step into whichever approval slot the request had reached. Each transition fires a templated notification email, and the flow closes with an exit-feedback form reachable from a link in the approval mail.

The second module is an interactive organisational chart with two modes — a user-centric view that recenters on any employee, showing their manager, peers and direct-report counts, and a department-tree view — backed by four dedicated endpoints and driven by a searchable header with department filtering, skeleton loading and error placeholders. Alongside these he worked on the onboarding mail pipeline (tokenised onboarding-form links, welcome and temporary-credential templates), hardened the resume-parsing endpoint against malformed and oversized field data, and added an employee status manager that lets HR change an employee's employment state in two clicks.

Tech Stack

Next.js 15 (App Router)React 18TypeScriptRedux ToolkitReact ReduxNextAuth.jsMaterial UI 7Tailwind CSS 4styled-componentsEmotionFramer MotionChart.jsreact-chartjs-2React LeafletAxiosZoddate-fnsCKEditor 5JestReact Testing LibraryNode.jsExpress 4PostgreSQL (pg)Redis / ioredisBullMQJWT (jsonwebtoken)bcryptjsHelmetexpress-rate-limitAWS S3AWS SESAWS CloudWatch LogsMicrosoft Graph APIMSAL (@azure/msal-node)Nodemailer + Handlebarsnode-cronWinstonMulter / multer-s3ExcelJSPDFKitpdfjs-distmammothofficeparserSwagger (swagger-jsdoc)PM2JenkinsAWS Elastic Beanstalk

Features

  • Offboarding & termination workflowA resignation state machine with manager and HR approval stages, a retention branch either role can initiate, and a separate HR-led termination path with approve and reject actions — each transition triggering a templated notification email.
  • Dynamic status stepperInstead of fixed steps, the progress stepper computes its step list from a request's current status plus its status history, swapping a retention step into whichever approval slot the request had reached.
  • Interactive organisational chartTwo chart modes — a user-centric view that recenters on any employee showing manager, peers and report counts, and a department tree — with employee search, department filtering and skeleton loading states.
  • Multi-tenant schema isolationAuth middleware resolves each request to a per-tenant PostgreSQL schema and storage provider, letting one deployment serve multiple client organisations with data held apart at the database level.
  • Pluggable document storageA document handler abstracts uploads behind one API so a tenant's files land in AWS S3 or in their own SharePoint site through the Microsoft Graph API, chosen per tenant record.
  • Recruitment pipeline with resume parsingJob requests, postings, a public career page and referrals feed an applicant tracker, with multi-strategy resume extraction (pdfjs, mammoth, officeparser) and Microsoft Teams interview scheduling via Graph.
  • Scheduled notification workersnode-cron jobs send birthday and work-anniversary emails on Indian and Canadian timezone schedules, expire stale assessments, run personality scoring jobs and prune logs.
Available for work

Let's create your next big idea.