Modern Recruitment Management System for Enterprise Hiring Teams
RecruitIQ is a comprehensive recruitment management platform built for modern hiring teams. It provides end-to-end applicant tracking, candidate management, interview scheduling, and analytics capabilities in a secure, multi-tenant architecture.
- π― Job Management - Create, publish, and manage job postings across multiple channels
- π₯ Candidate Tracking - Comprehensive applicant tracking with resume parsing and candidate profiles
- π Interview Scheduling - Automated scheduling with calendar integrations
- π Analytics & Reporting - Real-time insights into hiring metrics and pipeline health
- π Multi-Tenant Security - Enterprise-grade security with organization-level data isolation
- π API-First Design - RESTful API for integrations and custom workflows
- β‘ Performance Optimized - Fast response times with caching and query optimization
RecruitIQ follows a layered architecture pattern:
βββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React) β
β - Unified Web App (apps/web) β
β β’ All Product Modules β
β (Recruitment, HRIS, Payroll, Scheduling)|
βββββββββββββββββββββββββββββββββββββββββββ
β HTTP/REST
βββββββββββββββββββββββββββββββββββββββββββ
β API Layer (Express) β
β Routes β Controllers β Services β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Business Logic (Services) β
β - Validation β
β - Authorization β
β - Business Rules β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Data Access (Repositories) β
β - Database Queries β
β - Tenant Isolation β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Database (PostgreSQL) β
βββββββββββββββββββββββββββββββββββββββββββ
- Runtime: Node.js 18+
- Framework: Express.js
- Database: PostgreSQL 15+
- Authentication: JWT (JSON Web Tokens)
- Validation: Joi
- Testing: Jest, Supertest
- API Documentation: Swagger/OpenAPI
- Framework: React 18+
- Styling: TailwindCSS
- Build Tool: Vite
- Routing: React Router v6
- HTTP Client: Axios
- Testing: Vitest, Playwright
- Containerization: Docker
- CI/CD: GitHub Actions
- Monitoring: Custom logging with Winston
- Version Control: Git
- π Coding Standards - START HERE! Comprehensive coding standards for all code
- Backend Standards - Services, repositories, controllers
- Frontend Standards - React components, hooks, state management
- Testing Standards - Unit, integration, E2E testing
- Security Standards - Authentication, authorization, data protection
- Database Standards - Schema, queries, migrations, indexing
- API Standards - REST conventions, response format, error handling
- Git Standards - Commit messages, branching, PR process
- Documentation Standards - JSDoc, README, API docs
- Performance Standards - Optimization, caching, monitoring
- Multi-Product SaaS Architecture
- Production Resource Planning
- Docker Deployment Guide
- Security Audit Report
- Feature Management System - Tier-based access control
- Quick Start Guide - Developer reference with examples
- Mobile UX Strategy - Progressive Web App proposal for employee portal
- Full Proposal - Comprehensive 50-page analysis
- Quick Reference - Executive summary (5 min read)
- Node.js 18 or higher
- PostgreSQL 15 or higher
- npm or yarn
# Clone repository
git clone https://github.com/yourorg/recruitiq.git
cd recruitiq
# Navigate to backend
cd backend
# Install dependencies
npm install
# Setup environment variables
cp .env.example .env
# Edit .env with your database credentials and secrets
# Run database migrations
npm run migrate
# Start development server
npm run devBackend will be available at http://localhost:3001
The unified web app consolidates all product features (HRIS/Nexus, Payroll/PayLinQ, Recruitment/RecruitIQ, Scheduling/ScheduleHub) into a single application:
# From project root (uses pnpm workspace)
pnpm dev:web
# Or navigate to web app
cd apps/web
# Install dependencies
pnpm install
# Setup environment variables
cp .env.example .env
# Edit .env with API URL
# Start development server
pnpm devWeb app will be available at http://localhost:5177
Create a .env file in the backend directory:
# Server
NODE_ENV=development
PORT=3001
# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=recruitiq
DB_USER=postgres
DB_PASSWORD=your_password
# JWT
JWT_SECRET=your_jwt_secret_minimum_32_characters
JWT_EXPIRES_IN=24h
# Encryption
ENCRYPTION_KEY=your_encryption_key_32_bytes_hex
# Email (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=[email protected]
SMTP_PASSWORD=your_password
# Redis (optional - for caching)
REDIS_HOST=localhost
REDIS_PORT=6379Create .env file in apps/web directory:
VITE_API_URL=http://localhost:3001/api
VITE_APP_NAME=RecruitIQ WebFor rapid development environment setup with automated database initialization:
# Navigate to backend directory
cd backend
# Option 1: Basic setup (manual tenant creation required)
.\docker-init\setup.ps1
# Option 2: Complete setup with automatic tenant creation
# (requires license-id and customer-id from existing database records)
.\docker-init\setup.ps1 -LicenseId "your-license-uuid" -CustomerId "your-customer-uuid"
# Reset environment (clean slate)
.\docker-init\setup.ps1 -ResetWhat happens automatically:
- β PostgreSQL 15 container with RecruitIQ database
- β Database schema creation (migrations)
- β Production-ready seed data (organizations, users, features)
- β Conditional tenant creation (when license/customer IDs provided)
- β Development user account creation
If you prefer manual control:
# Clone and navigate
git clone https://github.com/yourorg/recruitiq.git
cd recruitiq/backend
# Setup environment
cp .env.example .env
# Edit .env with your configuration
# Start services
docker-compose up -d
# Check status
docker-compose ps
# View logs
docker-compose logs -f postgresIf you didn't provide license/customer IDs during setup:
# Create tenant manually (inside running container)
docker-compose exec backend node scripts/onboard-tenant.js \
--license-id "your-license-uuid" \
--customer-id "your-customer-uuid" \
--email "[email protected]" \
--name "Your Company"# Validate setup
.\docker-init\validate.ps1
# Test both scenarios
.\docker-init\test-workflow.ps1 -FullTest
# Check database status
docker-compose exec postgres psql -U postgres -d recruitiq -c "\dt"
# View recent logs
docker-compose logs --tail 20 postgres
# Reset if needed
docker-compose down -vFor a comprehensive command reference, see: backend/docker-init/QUICK_REFERENCE.md
.\docker-init\setup.ps1 -Reset
**Note:** License and customer IDs must come from existing database records. Contact your system administrator or check the platform database for valid values.
See [Docker Database Auto-Initialization](./backend/docker-init/README.md) for detailed documentation.
## π§ͺ Testing
### Backend Tests
```bash
cd backend
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run specific test suite
npm test -- JobService.test.js
# Run integration tests
npm run test:integration
# Run security tests
npm run test:security
cd apps/web
# Run unit tests
npm test
# Run E2E tests
npm run test:e2e
# Run tests with UI
npm run test:ui- Overall: 80% minimum
- Services: 90% minimum
- Repositories: 85% minimum
- Controllers: 75% minimum
Current coverage: 32/32 integration tests passing (100%)
# Build images
docker-compose build
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose downSee Docker Deployment Guide for detailed instructions.
# Backend
cd backend
npm run build
NODE_ENV=production npm start
# Frontend (Unified Web App)
cd apps/web
npm run build
# Serve dist/ folder with nginx or similarRecruitIQ implements enterprise-grade security:
- Authentication: JWT-based authentication with refresh tokens
- Authorization: Role-based access control (RBAC)
- Tenant Isolation: Organization-level data segregation enforced at database level
- Input Validation: Comprehensive validation using Joi schemas
- SQL Injection Prevention: Parameterized queries with custom wrapper
- XSS Prevention: Output encoding and Content Security Policy
- CSRF Protection: CSRF tokens for state-changing operations
- Rate Limiting: API rate limiting to prevent abuse
- Audit Logging: Complete audit trail of all operations
See Security Standards for complete security guidelines.
We welcome contributions! Please follow these steps:
- Read the standards: Start with CODING_STANDARDS.md
- Create a branch:
git checkout -b feature/your-feature - Follow conventions: Use proper commit message format (see Git Standards)
- Write tests: Maintain test coverage requirements
- Submit PR: Fill out the PR template completely
# 1. Create feature branch
git checkout -b feature/job-salary-filter
# 2. Make changes following coding standards
# 3. Write tests
npm test
# 4. Commit with conventional format
git commit -m "feat(jobs): add salary range filter to job search"
# 5. Push and create PR
git push origin feature/job-salary-filterAll code changes require:
- Code follows Coding Standards
- Tests added/updated with 80%+ coverage
- All tests passing
- Documentation updated
- PR template filled out
- At least one approving review
recruitiq/
βββ backend/ # Node.js/Express API
β βββ src/
β β βββ controllers/ # HTTP request handlers
β β βββ services/ # Business logic
β β βββ repositories/ # Data access layer
β β βββ middleware/ # Express middleware
β β βββ routes/ # API routes
β β βββ products/ # Dynamic product modules
β β βββ utils/ # Utility functions
β β βββ database/ # Database config & migrations
β βββ tests/ # Test suites
βββ apps/
β βββ web/ # Unified React application
β β βββ src/
β β β βββ components/ # Reusable React components
β β β βββ pages/ # Product module pages
β β β βββ contexts/ # React contexts
β β β βββ services/ # API service layer
β β β βββ utils/ # Utility functions
β β βββ tests/ # Component tests
β βββ portal/ # Deprecated (merged into web)
βββ packages/ # Shared packages
β βββ api-client/ # Centralized API client
β βββ auth/ # Authentication utilities
β βββ types/ # TypeScript type definitions
β βββ ui/ # Shared UI components
β βββ utils/ # Shared utilities
βββ docs/ # Documentation
β βββ BACKEND_STANDARDS.md
β βββ FRONTEND_STANDARDS.md
β βββ TESTING_STANDARDS.md
β βββ ... (all standards documents)
βββ CODING_STANDARDS.md # Main standards overview
- API Response Time: P95 < 200ms
- Database Queries: < 100ms for simple queries
- Page Load Time: < 2 seconds
- Lighthouse Score: > 90
- Bundle Size: < 200KB gzipped
See Performance Standards for optimization guidelines.
- Controller to Service layer migration
- Comprehensive test coverage
- Complete coding standards documentation
- Mobile UX strategy proposal (PWA recommendation)
- Progressive Web App (PWA) for Employees - Mobile-first employee portal (Q1 2026)
- PWA infrastructure (service worker, manifest)
- Employee self-service features (attendance, payroll, profile)
- Offline capabilities and push notifications
- Advanced search and filtering
- Email notifications
- Resume parsing with AI
- Integration with job boards
- Advanced analytics dashboard
- Native mobile applications (iOS/Android) - Evaluate after PWA adoption
- Video interview integration
- AI-powered candidate matching
- Multi-language support
- Documentation: Coding Standards
- Issues: GitHub Issues
- Email: [email protected]
MIT License - see LICENSE file for details
RecruitIQ is built and maintained by a dedicated team of developers committed to creating the best recruitment management platform.
- Express.js community
- React community
- PostgreSQL community
- All contributors and testers
Important: Before writing any code, please read the Coding Standards document. It contains mandatory guidelines that all code must follow.
For questions about standards or architecture decisions, please refer to the relevant documentation or open a discussion issue.