An AI-powered Human Resource Information System (HRIS) for managing employee records and resumes.
The system provides employee CRUD operations, resume uploads, and AI-assisted resume parsing to automatically extract employee information.
-
Employee management
- Create employees
- View employee details
- Update employee information
- Delete employees
- Search employees
-
Resume management
- Upload PDF and DOCX resumes
- Store employee resumes
- Extract text from resumes
-
AI resume parsing
- Automatically extract information from resumes
- Populate employee fields from parsed resume data
-
Authentication
- JWT-based API authentication
-
Responsive web interface
- Next.js
- React
- TypeScript
- Tailwind CSS
- Axios
- Lucide React
- NestJS
- TypeScript
- REST API
- JWT Authentication
- Multer
- PDF Parse
- Mammoth
- n8n
- Ollama
- AI-powered resume processing
- MySQL
hris-smart/
├── frontend/
│ └── app/
│ └── employees/
│ ├── page.tsx
│ └── components/
│ ├── EmployeeViewModal.tsx
│ ├── EmployeeFormModal.tsx
│ └── EmployeeTable.tsx
│
└── backend/
├── src/
│ ├── employees/
│ ├── auth/
│ └── ...
└── uploads/
└── resumes/
Make sure the following are installed:
- Node.js 20+
- npm
- MySQL
- n8n
- Ollama
Clone the repository:
git clone <repository-url>
cd hris-smartcd backend
npm installCreate a .env file and configure the required environment variables.
Example:
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USERNAME=root
DATABASE_PASSWORD=your_password
DATABASE_NAME=hris
JWT_SECRET=your_jwt_secret
N8N_WEBHOOK_URL=http://localhost:5678/webhook/resume-autofillStart the backend:
npm run start:devThe API will run on:
http://localhost:3000
Open another terminal:
cd frontend
npm install
npm run devThe frontend will run on:
http://localhost:3001
The resume processing workflow works as follows:
User uploads resume
↓
Frontend sends resume to NestJS
↓
NestJS extracts resume text
↓
NestJS sends extracted text to n8n
↓
n8n processes the resume using AI
↓
Structured employee information is returned
↓
Frontend automatically fills employee fields
↓
User reviews the information
↓
Employee record is saved
AI resume parsing supports:
- DOCX
Maximum AI parsing file size:
10 MB
Resume storage uploads are limited to:
5 MB
| Method | Endpoint | Description |
|---|---|---|
| GET | /employees |
Get all employees |
| GET | /employees/:id |
Get an employee |
| POST | /employees |
Create an employee |
| PATCH | /employees/:id |
Update an employee |
| DELETE | /employees/:id |
Delete an employee |
| POST | /employees/resume/parse |
Parse a resume with AI |
| POST | /employees/:id/resume |
Upload an employee resume |
All employee endpoints require JWT authentication.
- JWT authentication for protected API endpoints
- File type validation for resume uploads
- File size limits
- Server-side validation
- Resume files stored outside the frontend application
Run the backend:
cd backend
npm run start:devRun the frontend:
cd frontend
npm run devMake sure MySQL, n8n, and Ollama are running before testing the complete resume-processing workflow.
- Employee profile photos
- Role-based access control
- Employee dashboard and analytics
- Resume version history
- Advanced employee filtering
- AI-powered candidate matching
- Automated interview question generation
- Email notifications
- Cloud storage integration
This project is for demonstration and development purposes.