ARIA (AI Recruitment Intelligence Analyst) is a modern, AI-powered recruitment platform designed to streamline the hiring process. It leverages Google's Gemini AI to enhance candidate screening, job matching, and recruitment workflows.
Live Demo: https://umurava-aria-project.vercel.app
- AI-Powered Candidate Screening - Intelligent candidate evaluation using Google Gemini AI
- Job Management - Create, manage, and organize job postings
- Candidate Database - Comprehensive candidate profile management
- Real-time Notifications - Stay updated with recruitment activities
- Session Management - Track recruitment sessions and interviews
- File Processing - Support for CSV, Excel, and PDF file uploads
- Secure Authentication - JWT-based authentication with bcrypt password hashing
- Responsive UI - Modern, mobile-friendly interface built with React and Next.js
- Framework: Next.js 16.2.4
- Language: TypeScript 5
- UI Components: React 18
- Charting: Recharts 2.12.7
- Icons: Lucide React 0.378.0
- Styling: CSS
- Runtime: Node.js
- Framework: Express.js 5.2.1
- Language: TypeScript 6.0.2
- Database: MongoDB 9.4.1
- Authentication: JWT + bcryptjs
- AI Integration: Google Generative AI
- Security: Helmet, CORS
- File Processing: Multer, ExcelJS, PDF-Parse, PapaParse
Before you begin, ensure you have installed:
- Node.js (v18 or higher)
- npm (v9 or higher)
- MongoDB (local or remote instance)
- Google Generative AI API Key (get it from Google AI Studio)
git clone https://github.com/chaste-ganza/umurava-aria-project.git
cd umurava-aria-projectNavigate to the server directory and install dependencies:
cd server
npm installCreate a .env file in the server directory using the provided example:
cp .env.example .envConfigure your environment variables:
PORT=4000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/ARIA
MONGO_MAX_POOL_SIZE=20
MONGO_MIN_POOL_SIZE=2
MONGO_SERVER_SELECTION_TIMEOUT_MS=5000
MONGO_SOCKET_TIMEOUT_MS=45000
JWT_SECRET=your_secret_jwt_key_here
JWT_EXPIRES_IN=7d
BCRYPT_SALT_ROUNDS=10
GEMINI_API_KEY=your_google_api_key_here
AI_REQUEST_TIMEOUT_MS=45000
AI_MAX_RETRIES=2
AI_RETRY_BASE_DELAY_MS=1500
CORS_ORIGIN=http://localhost:3000Start the development server:
npm run devThe API will be available at http://localhost:4000
In a new terminal, navigate to the client directory and install dependencies:
cd client
npm installStart the development server:
npm run devThe frontend will be available at http://localhost:3000
npm run dev # Start development server with hot reload
npm run build # Build TypeScript to JavaScript
npm start # Run production build
npm run migrate:candidate-email-index # Database migration scriptnpm run dev # Start development server
npm run build # Build for production
npm start # Start production server
npm run lint # Run ESLintPOST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user profile
GET /api/jobs- List all jobsPOST /api/jobs- Create a new jobGET /api/jobs/:id- Get job detailsPUT /api/jobs/:id- Update jobDELETE /api/jobs/:id- Delete job
GET /api/candidates- List all candidatesPOST /api/candidates- Create a new candidateGET /api/candidates/:id- Get candidate detailsPUT /api/candidates/:id- Update candidateDELETE /api/candidates/:id- Delete candidate
GET /api/sessions- List all sessionsPOST /api/sessions- Create a new sessionGET /api/sessions/:id- Get session details
GET /api/notifications- Get user notificationsPOST /api/notifications- Create notification
GET /health- API health status
The application uses MongoDB with the following main collections:
- Users - Authentication and user profiles
- Jobs - Job postings and descriptions
- Candidates - Candidate profiles and information
- Sessions - Interview/recruitment sessions
- Notifications - User notifications
- JWT Authentication - Secure token-based authentication
- Password Hashing - bcryptjs for secure password storage
- CORS Protection - Cross-Origin Resource Sharing configured
- Helmet - HTTP security headers
- Input Validation - Zod schema validation on requests
- Error Handling - Centralized error handling middleware
umurava-aria-project/
βββ client/ # Next.js frontend application
β βββ app/ # App directory (Next.js 13+)
β βββ components/ # React components
β βββ lib/ # Utility functions
β βββ public/ # Static assets
β βββ package.json
β βββ tsconfig.json
βββ server/ # Express.js backend application
β βββ src/
β β βββ features/ # Feature modules (auth, jobs, candidates, etc.)
β β βββ middleware/ # Custom middleware
β β βββ models/ # MongoDB schemas
β β βββ app.ts # Express app setup
β β βββ server.ts # Server entry point
β βββ dist/ # Compiled JavaScript (generated)
β βββ package.json
β βββ tsconfig.json
βββ .gitignore
βββ README.md
- Production MongoDB instance
- Google Generative AI API key
- Environment variables configured
- Node.js runtime (v18+)
Server:
cd server
npm run build
npm startClient:
cd client
npm run build
npm startCreate a Dockerfile for containerized deployment:
# Backend Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY server/package*.json ./
RUN npm ci --only=production
COPY server/dist ./dist
CMD ["node", "dist/server.js"]Update your production .env file:
NODE_ENV=production
MONGODB_URI=your_production_mongodb_uri
JWT_SECRET=your_secure_jwt_secret
GEMINI_API_KEY=your_api_key
CORS_ORIGIN=https://yourdomain.com- Ensure MongoDB is running locally or check remote connection string
- Verify
MONGODB_URIin.env - Check firewall rules for MongoDB port (27017)
- Verify
CORS_ORIGINmatches your frontend URL - Check
PORTin.env(default: 4000) - Ensure backend server is running:
npm run devin server directory
- Clear node_modules:
rm -rf node_modules && npm install - Delete build cache:
rm -rf .next(client) orrm -rf dist(server) - Check Node.js version:
node --version(should be v18+)
| Variable | Description | Example |
|---|---|---|
PORT |
Server port | 4000 |
NODE_ENV |
Environment | development | production |
MONGODB_URI |
Database connection | mongodb://localhost:27017/ARIA |
JWT_SECRET |
JWT signing key | your-secret-key |
GEMINI_API_KEY |
Google AI API key | AIzaSy... |
CORS_ORIGIN |
Allowed frontend origin | http://localhost:3000 |
AI_REQUEST_TIMEOUT_MS |
AI request timeout | 45000 |
AI_MAX_RETRIES |
Max AI request retries | 2 |
For more detailed information:
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit changes:
git commit -m 'Add your feature' - Push to branch:
git push origin feature/your-feature - Open a Pull Request
For issues, questions, or suggestions:
- Open an issue on GitHub Issues
- Contact the development team
This project is licensed under the ISC License - see the LICENSE file for details.
- Chaste (@chaste-ganza) - Project Lead
- SanoAngella (@SanoAngella) - Frontend Developer
- RUGWIRO Mike Galen (@mgalen007) - AI Engineer
- ISINGIZWE KWIZERA Blaise (@blaisekwizera31-hash) - System Designer
- Bonte (@Bonte4) - Backend Developer
- Google Generative AI for AI capabilities
- Next.js for the modern frontend framework
- Express.js for the robust backend framework
- MongoDB for the flexible database
Last Updated: April 25, 2026
Version: 0.1.0 (Alpha)
β If you find this project helpful, please consider giving it a star!