platform roles
Fact3 (Admin, Employer, Applicant)
Case Study
Updated: 2025-08-25A full-stack recruitment platform providing role-based job posting, candidate application tracking, resume management, and analytical dashboards. Built with a Next.js 15.5 React 19 frontend utilizing Zustand, Zod validation, and Recharts, backed by an Express.js and MongoDB (Mongoose) REST API with JWT authentication and granular RBAC.
platform roles
Fact3 (Admin, Employer, Applicant)
frontend framework
FactNext.js 15.5 + React 19
database
FactMongoDB / Mongoose ODM
state management
FactZustand
data visualization
FactRecharts Analytics
Flexible schema design accommodates diverse job requirements, variable applicant questionnaires, and dynamic application metadata without rigid multi-table joins.
Trade-off: Requires application-level integrity checks to maintain referential consistency between users, jobs, and applications.
Combines secure server-side API communication via Server Actions with instant, responsive client-side UI filtering and state updates in Zustand.
Trade-off: Requires synchronizing client store state with server response revalidations.
Guarantees strict separation: Applicants can only view and submit applications, Employers can manage company jobs and evaluate candidates, and Admins oversee platform telemetry.
Trade-off: Requires authorization checks on both API endpoints and frontend route guards.
Modern hiring platforms require distinct, tailored user flows for applicants searching and submitting materials, employers managing candidate pipelines, and platform administrators monitoring job health.
Designed and implemented TalentHub as a decoupled full-stack platform. The backend REST service built in Express.js and TypeScript manages users, jobs, and applications using MongoDB. The frontend built with Next.js 15.5 and Tailwind CSS leverages Zustand for fast reactive state management, Zod for client-server schema validation, and Recharts for interactive hiring metrics.
Delivered a complete recruitment portal supporting multi-role authentication, application lifecycle tracking, and responsive mobile-first administrative interfaces.
| Dimension | Selected Option | Impact | Compromise |
|---|---|---|---|
| Database | MongoDB with Mongoose ODM | High agility for heterogeneous job specifications and applicant metadata | No built-in multi-table ACID joins across disparate entities |
| State Management | Zustand Lightweight Store | Minimal boilerplate with zero unnecessary re-renders in complex dashboards | Requires explicit state clearing on user logout |
| Validation | Zod Schema Validation | Shared type inference and runtime safety across forms and actions | Slight bundle size increase on the client bundle |
Failure Path & Recovery Invariants
If an employer deletes a job post that contains active applications, the system marks the post archived rather than hard-deleting records, preserving applicants' submission history.
Add full-text search indexing with Atlas Search or Elasticsearch for advanced semantic resume and skill matching.
Introduce S3/Cloudflare R2 pre-signed URLs for direct resume binary uploads rather than multipart gateway proxying.