RecruiTech is a modern, full-stack recruitment platform that revolutionizes hiring with intelligent matching, automated screening, and seamless candidate experiences.
- π 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)
- πΌ 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
- π’ 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
- π 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
- 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
- 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
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
- Node.js (v20+)
- MongoDB (v8+)
- Docker & Docker Compose
- npm or yarn
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 --stopThe 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
-
Clone the repository
git clone https://github.com/yourusername/recruitech.git cd RecruiTech -
Setup Backend
cd backend npm install -
Configure Backend Environment Create a
.envfile in thebackenddirectory:
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-
Setup Frontend
cd ../frontend npm install -
Configure Frontend Environment Create a
.envfile in thefrontenddirectory:VITE_API_URL=http://localhost:4000 VITE_GRAPHQL_URL=http://localhost:4000/graphql
-
Start MongoDB
# Using Homebrew (macOS) brew services start mongodb-community # Or run directly mongod --dbpath /path/to/data/directory
-
Run the Application
Terminal 1 (Backend):
cd backend npm run devTerminal 2 (Frontend):
cd frontend npm run dev -
Access the Application
- Frontend: http://localhost:5173
- Backend API: http://localhost:4000
- GraphQL Playground: http://localhost:4000/graphql
To enable Google OAuth authentication:
-
Create Google Cloud Project
- Go to Google Cloud Console
- Create a new project named "RecruiTech"
-
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.emailanduserinfo.profile - Add test users (your email) for development
-
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
-
Update Backend
.envGOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-client-secret
-
Restart Backend Server
- OAuth will be automatically enabled
- Look for "β Google OAuth configured" in logs
-
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
-
Login
- Enter email/password or use Google OAuth
- Redirected to candidate dashboard
-
Dashboard
- View job recommendations
- Track applications
- See profile analytics
- Manage profile settings
-
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
-
Login
- Enter email/password or use Google OAuth
- Redirected to recruiter dashboard
-
Dashboard
- View active job postings
- Manage applicants
- Post new jobs
- View hiring analytics
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
- 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
- email, password, google_id, role, profile_pic, is_admin, metadata
- 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)
- user_id, first_name, last_name, email, phone_number
- company_id, verification_status
- created_by, name, domain, is_verified
GET /health- Health checkGET /auth/google- Initiate Google OAuthGET /auth/google/callback- OAuth callbackPOST /auth/google/register- Complete OAuth registration
See the GraphQL Playground at http://localhost:4000/graphql for full schema documentation.
- 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)
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
- Your Name - Initial work
- Icons by Lucide
- Design inspiration from modern recruitment platforms
- Built with β€οΈ using React and Node.js
For support, email support@recruitech.com or open an issue in the repository.
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