Skip to content

shantanujoshi25/RecruiTech

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

74 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RecruiTech - AI-Powered Recruitment Platform

RecruiTech is a modern, full-stack recruitment platform that revolutionizes hiring with intelligent matching, automated screening, and seamless candidate experiences.

RecruiTech Node React MongoDB

✨ Features

For Candidates βœ… Implemented

  • πŸš€ Quick Signup - Register with email/password or Google OAuth
  • πŸ“ Profile Management - Comprehensive profile with resume, GitHub, LeetCode, and portfolio links
  • ✏️ Edit Profile - Update personal info, URLs, and job search status anytime
  • πŸ“Š Dashboard - View profile status and recommended jobs
  • 🎯 Status Management - Set job search status (actively/casually looking, not looking)

For Recruiters βœ… Implemented

  • πŸ’Ό Company Management - Create or join verified companies
  • ✏️ Edit Profiles - Update personal profile and company information
  • πŸ“ˆ Dashboard - View active job postings and hiring metrics
  • πŸ” Company Search - Find and join existing companies with real-time search
  • ⚑ Quick Actions - Easy access to profile editing and candidate search

Coming Soon 🚧

  • πŸ“’ Job Posting - Post jobs with detailed requirements
  • πŸ‘₯ Candidate Search - Find the perfect candidates with AI assistance
  • 🎯 Job Matching - AI-powered job recommendations based on skills
  • πŸ“Š Application Tracking - Track all applications in one place
  • πŸŽ₯ Video Screening - Complete video interviews at your convenience

Authentication

  • πŸ” Secure Login - Email/password authentication with JWT
  • 🌐 Google OAuth - One-click signup with Google
  • πŸ‘€ Role-Based Access - Separate flows for candidates and recruiters
  • πŸ”’ Protected Routes - Secure access to user-specific content

πŸ› οΈ Tech Stack

Frontend

  • React 18 - Modern UI library
  • Vite - Lightning-fast build tool
  • React Router - Client-side routing
  • Axios - HTTP client for API calls
  • Lucide React - Beautiful icons
  • Custom GraphQL utility - GraphQL client using Axios

Backend

  • Node.js - JavaScript runtime
  • Express - Web framework
  • Apollo Server - GraphQL server
  • MongoDB - NoSQL database
  • Mongoose - ODM for MongoDB
  • Passport.js - Authentication middleware
  • JWT - JSON Web Tokens for auth
  • bcrypt - Password hashing

πŸ“ Project Structure

RecruiTech/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”‚   β”œβ”€β”€ database.js
β”‚   β”‚   β”‚   └── passport.js
β”‚   β”‚   β”œβ”€β”€ features/
β”‚   β”‚   β”‚   β”œβ”€β”€ user/
β”‚   β”‚   β”‚   β”œβ”€β”€ candidate/
β”‚   β”‚   β”‚   β”œβ”€β”€ recruiter/
β”‚   β”‚   β”‚   β”œβ”€β”€ company/
β”‚   β”‚   β”‚   └── job/
β”‚   β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”‚   └── auth.js
β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”‚   β”œβ”€β”€ user.schema.js
β”‚   β”‚   β”‚   β”œβ”€β”€ candidate.schema.js
β”‚   β”‚   β”‚   β”œβ”€β”€ recruiter.schema.js
β”‚   β”‚   β”‚   └── company.schema.js
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   └── auth.routes.js
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── index.js
β”‚   β”œβ”€β”€ package.json
β”‚   └── README.md
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ common/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”œβ”€β”€ candidate/
β”‚   β”‚   β”‚   └── recruiter/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ common/
β”‚   β”‚   β”‚   β”œβ”€β”€ candidate/
β”‚   β”‚   β”‚   └── recruiter/
β”‚   β”‚   β”œβ”€β”€ context/
β”‚   β”‚   β”‚   └── AuthContext.jsx
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   └── graphql.js
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   β”œβ”€β”€ main.jsx
β”‚   β”‚   └── index.css
β”‚   β”œβ”€β”€ package.json
β”‚   └── index.html
β”‚
β”œβ”€β”€ QUICKSTART.md
└── README.md

πŸš€ Getting Started

Prerequisites

  • Node.js (v20+)
  • MongoDB (v8+)
  • Docker & Docker Compose
  • npm or yarn

Quick Start (Recommended)

Use the automated startup script:

# First time setup - copy .env.example files
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
cp interview-service/.env.example interview-service/.env
cp airflow/.env.example airflow/.env

# Edit the .env files with your credentials (OpenAI API key, Gmail credentials, etc.)

# Install dependencies
cd backend && npm install && cd ..
cd frontend && npm install && cd ..
cd interview-service && npm install && cd ..

# Start all services (Kafka, Backend, Interview Service, Frontend, Airflow)
./start.sh

# To stop all services
./start.sh --stop

The script will:

  • Validate all environment variables
  • Start Kafka (Docker)
  • Start Backend on port 4000
  • Start Interview Service on port 5001
  • Start Frontend on port 5173
  • Start Airflow (Docker) on port 8080
  • Create logs directory automatically
  • Display all service URLs

Manual Installation

  1. Clone the repository

    git clone https://github.com/yourusername/recruitech.git
    cd RecruiTech
  2. Setup Backend

    cd backend
    npm install
  3. Configure Backend Environment Create a .env file in the backend directory:

PORT=4000
NODE_ENV=development
JWT_SECRET=my-super-secret-jwt-key-for-development
FRONTEND_URL=http://localhost:5173
SESSION_SECRET=my-session-secret-for-development
MONGODB_URL=mongodb://localhost:27017/recruitech

# OAuth is optional - leave these empty for now
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URL=http://localhost:4000/auth/google/callback
  1. Setup Frontend

    cd ../frontend
    npm install
  2. Configure Frontend Environment Create a .env file in the frontend directory:

    VITE_API_URL=http://localhost:4000
    VITE_GRAPHQL_URL=http://localhost:4000/graphql
  3. Start MongoDB

    # Using Homebrew (macOS)
    brew services start mongodb-community
    
    # Or run directly
    mongod --dbpath /path/to/data/directory
  4. Run the Application

    Terminal 1 (Backend):

    cd backend
    npm run dev

    Terminal 2 (Frontend):

    cd frontend
    npm run dev
  5. Access the Application

πŸ” Google OAuth Setup

To enable Google OAuth authentication:

Quick Steps:

  1. Create Google Cloud Project

  2. Configure OAuth Consent Screen

    • Go to "APIs & Services" β†’ "OAuth consent screen"
    • Select "External" user type
    • Fill in app name, support email, and developer contact
    • Add scopes: userinfo.email and userinfo.profile
    • Add test users (your email) for development
  3. Create OAuth Credentials

    • Go to "APIs & Services" β†’ "Credentials"
    • Create "OAuth client ID" β†’ "Web application"
    • Add Authorized JavaScript origins: http://localhost:5173
    • Add Authorized redirect URIs: http://localhost:4000/auth/google/callback
    • Copy Client ID and Client Secret
  4. Update Backend .env

    GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
    GOOGLE_CLIENT_SECRET=your-client-secret
  5. Restart Backend Server

    • OAuth will be automatically enabled
    • Look for "βœ… Google OAuth configured" in logs

πŸ“– User Flows

Candidate Flow

  1. Signup

    • Choose "Candidate" role
    • Enter email/password or use Google OAuth
    • Complete profile with:
      • Personal information
      • Resume URL (Google Drive, Dropbox, etc.)
      • GitHub profile (optional)
      • LeetCode profile (optional)
      • Portfolio website (optional)
      • Profile summary
      • Job search status
  2. Login

    • Enter email/password or use Google OAuth
    • Redirected to candidate dashboard
  3. Dashboard

    • View job recommendations
    • Track applications
    • See profile analytics
    • Manage profile settings

Recruiter Flow

  1. Signup

    • Choose "Recruiter" role
    • Enter email/password or use Google OAuth
    • Select or create company:
      • Search verified companies
      • Or create new company with domain
    • Complete profile with:
      • Personal information
      • Company affiliation
  2. Login

    • Enter email/password or use Google OAuth
    • Redirected to recruiter dashboard
  3. Dashboard

    • View active job postings
    • Manage applicants
    • Post new jobs
    • View hiring analytics

🎨 Design Theme

The application features a modern dark theme with:

  • Primary Colors: Dark blue (#0f1c2e, #1a2c42)
  • Accent Color: Cyan (#22d3ee)
  • Background: Deep dark (#0a1525)
  • Typography: Inter font family
  • UI Elements: Smooth animations, rounded corners, subtle shadows

πŸ”’ Security Features

  • Password Hashing: bcrypt with salt rounds
  • JWT Authentication: Secure token-based auth
  • OAuth 2.0: Industry-standard OAuth flow
  • Protected Routes: Role-based access control
  • Input Validation: Server-side validation for all inputs
  • CORS: Configured for specific origins
  • Rate Limiting: API request throttling
  • Helmet: Security headers for Express

πŸ“Š Database Schema

User

  • email, password, google_id, role, profile_pic, is_admin, metadata

Candidate

  • user_id, first_name, last_name, email, phone_number
  • resume_url, github_url, leetcode_url, portfolio_url
  • profile_summary, status (actively_looking, casually_looking, not_looking)

Recruiter

  • user_id, first_name, last_name, email, phone_number
  • company_id, verification_status

Company

  • created_by, name, domain, is_verified

πŸ§ͺ API Endpoints

REST Endpoints

  • GET /health - Health check
  • GET /auth/google - Initiate Google OAuth
  • GET /auth/google/callback - OAuth callback
  • POST /auth/google/register - Complete OAuth registration

GraphQL Queries & Mutations

See the GraphQL Playground at http://localhost:4000/graphql for full schema documentation.

πŸ›£οΈ Roadmap

  • User authentication (Email/Password + Google OAuth)
  • Role-based signup and login flows
  • Candidate profile management
  • Recruiter profile management
  • Company creation and selection
  • Profile editing for candidates and recruiters
  • Job posting and search functionality
  • AI-powered candidate matching
  • Application tracking system
  • Video screening integration
  • Real-time messaging between candidates and recruiters
  • Advanced analytics dashboard
  • Email notifications
  • Mobile app (React Native)
  • Multiple OAuth providers (LinkedIn, GitHub)

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License.

πŸ‘₯ Authors

  • Your Name - Initial work

πŸ™ Acknowledgments

  • Icons by Lucide
  • Design inspiration from modern recruitment platforms
  • Built with ❀️ using React and Node.js

πŸ“§ Support

For support, email support@recruitech.com or open an issue in the repository.

Project summary

RecruiTech is an end-to-end technical recruiting platform that brings job posting, candidate review, and live AI-led interviews into a single cohesive workflow, eliminating the context switching that comes with fragmented hiring tools. The platform automates candidate evaluation through CrewAI agents orchestrated by Apache Airflow and Kafka, enriching profiles from resumes, job descriptions, and public engineer signals without any manual effort. It uses Elasticsearch to power full-text search across jobs and talent, gRPC handles fast typed communication between the core platform and the backend services, and GraphQL serves as the primary API contract for all data flowing in and out of the application. Live AI interviews run over WebSockets for real-time signaling and WebRTC for camera and audio, giving candidates a responsive room while the AI stack follows and processes their answers as they happen.


Made with ❀️ by RecruiTech Team

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 73.7%
  • Python 15.9%
  • CSS 8.2%
  • Shell 2.0%
  • Other 0.2%