An end-to-end HR SaaS ecosystem spanning employee lifecycle management, talent acquisition, and a candidate recruitment portal — engineered across four tightly coupled repositories.
End-to-end HR SaaS for workforce management — employees, attendance, assets, insurance, leave, projects, reports, and an AI chatbot assistant.
Candidate-facing recruitment portal with multilingual job discovery, application tracking, profile management, and a dark-space aesthetic built on Vite.
Multi-tenant talent acquisition gateway powering both frontends — RESTful, session-secured, with Cloudinary media streaming, cron jobs, and full RBAC.
Backend REST API powering the HR platform — employee administration, attendance tracking, asset lifecycle, insurance plans, payroll with incentives, dynamic reporting, and an AI chatbot assistant.
| Layer | Technologies |
|---|---|
| Framework | Next.js 16 (App Router) · React 19 · TypeScript 5 · Vite (Portal) |
| Styling | Tailwind CSS v4 · clsx · tailwind-merge · custom CSS variables |
| Client State | Zustand 5 — auth store, modal/UI stores, session persistence |
| Server State | TanStack React Query 5 — 60s stale time, 1 retry, optimistic mutations |
| HTTP | Axios 1 — custom interceptors, token refresh queue, normalized responses |
| Forms | React Hook Form 7 + Zod 4 — declarative validation, localized error messages |
| Charts | Recharts — pie, bar, radial bar, animated skeletons |
| Animations | Framer Motion 12 — page transitions, staggered reveals |
| i18n | next-intl 4 — English + Arabic, 20 namespace files, RTL/LTR DOM toggling |
| Backend (Portal) | Express · MongoDB (Mongoose) · Passport (Local + Google + GitHub OAuth) |
| Nezuko API | Express 5 · TypeScript 5 · PostgreSQL 16 · Prisma 7 · JWT (httpOnly + Bearer) · Joi 18 · Cloudinary · Nodemailer · Google Gemini · PDFKit · Docker Compose |
| Media | Cloudinary CDN — diskless buffer streaming via streamifier + Multer memory |
| Security | Helmet · CORS whitelist · express-rate-limit · signed sessions · httpOnly cookies |
| Jobs | node-cron — automatic job expiration daemon |
| Docs | swagger-jsdoc + swagger-ui-express — interactive sandbox at /api-docs |
| Testing | Jest + Supertest — integration suite |
/api/v1.
tenantId on every model{ status, message, data?, errors?, code? }prisma/ — Schema + migrationssrc/locales/ — en.json + ar.json (614+ lines)src/modules/ — 15 feature modulessrc/shared/ — config, middleware, errors, interfaces, enums, services, utils, validations