You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
InterviewXpert is a cutting-edge recruitment and interview preparation platform that leverages Artificial Intelligence and Computer Vision to revolutionize the hiring process. The platform serves three distinct user types:
Role
Purpose
Candidates
Practice AI-powered mock interviews with real-time behavioral analysis
Recruiters
Post jobs, manage candidates, and review AI-generated interview reports
Admins
Monitor platform analytics, manage users, and oversee transactions
Key Features
For Candidates
Feature
Description
AI Mock Interviews
Practice with an intelligent AI interviewer that asks role-specific questions
Real-time Behavioral Analysis
Uses Face-API.js to analyze eye contact, expressions, and confidence
Resume Builder & Analyzer
Create professional resumes and get instant ATS compatibility scores
Smart Job Matching
Get "Best Match" recommendations based on skills and profile
Performance Reports
Comprehensive feedback on technical accuracy and communication
Wallet System
Razorpay integration for purchasing premium mock interview credits
For Recruiters
Feature
Description
Job Posting
Create and manage detailed job listings with requirements
sequenceDiagram
participant U as User
participant A as Auth Page
participant FB as Firebase Auth
participant FS as Firestore
participant App as Application
U->>A: Enter credentials
A->>FB: signInWithEmailAndPassword()
FB-->>A: Auth Success + User UID
A->>FS: getDoc(users/{uid})
FS-->>A: User Profile (role, fullname, etc.)
A->>App: Update AuthContext
alt Role = Candidate
App->>U: Redirect to /candidate/jobs
else Role = Recruiter
App->>U: Redirect to /recruiter/jobs
else Role = Admin
App->>U: Redirect to /admin
end
Loading
Interview Process Flow
flowchart LR
subgraph Preparation["Preparation"]
A[Browse Jobs] --> B[Apply/Request]
B --> C[Get Approved]
end
subgraph Interview["Interview"]
C --> D[Start Interview]
D --> E[Face Detection Init]
E --> F[Answer Questions]
F --> G{More Questions?}
G -->|Yes| F
G -->|No| H[Submit Interview]
end
subgraph Analysis["Analysis"]
H --> I[AI Evaluates Answers]
I --> J[Generate Scores]
J --> K[Create Report]
end
subgraph Results["Results"]
K --> L[View Report]
L --> M[Download PDF]
end
style Preparation fill:#e3f2fd
style Interview fill:#fff3e0
style Analysis fill:#e8f5e9
style Results fill:#fce4ec
Loading
Payment Flow
sequenceDiagram
participant U as User
participant P as Payment Page
participant R as Razorpay
participant FB as Firebase
U->>P: Select Credits Package
P->>R: Create Order
R-->>P: Order ID
P->>R: Open Checkout Modal
U->>R: Complete Payment
R-->>P: Payment Success + Signature
P->>FB: Update User Wallet Credits
FB-->>P: Credits Updated
P->>U: Show Success & New Balance
Loading
Tech Stack
Frontend
Technology
Version
Purpose
React
19.2
UI Library
TypeScript
5.8
Type Safety
Vite
6.2
Build Tool
React Router
7.9
Navigation
Styling
Technology
Version
Purpose
Tailwind CSS
4.1
Utility CSS
Framer Motion
11.15
Animations
GSAP
3.14
Advanced Animations
Lucide React
0.469
Icons
Backend & Auth
Technology
Version
Purpose
Firebase
12.6
BaaS
Firestore
-
Database
Firebase Auth
-
Authentication
Cloud Storage
-
File Storage
AI & CV
Technology
Version
Purpose
Google GenAI
1.30
AI Responses
Face-API.js
1.7
Facial Analysis
Recharts
3.5
Data Viz
PDF.js
5.4
PDF Parsing
Installation
Prerequisites
Node.js v18 or higher
npm or yarn
Firebase project with Firestore & Authentication enabled
Quick Start
# 1. Clone the repository
git clone https://github.com/AaradhyaproK/interviewxpert-opencv.git
cd interviewxpert-opencv
# 2. Install dependencies
npm install
# 3. Set up environment variables (see section below)
cp .env.example .env
# 4. Start development server
npm run dev
# 5. Open in browser# Navigate to http://localhost:5173
Security Note: Never commit your .env file to version control. Add it to .gitignore.
User Roles & Routes
Route Protection System
flowchart TD
A[User Visits Route] --> B{Authenticated?}
B -->|No| C["Redirect to /auth"]
B -->|Yes| D{Check Role}
D -->|Candidate| E["Candidate Routes"]
D -->|Recruiter| F["Recruiter Routes"]
D -->|Admin| G["Admin Routes"]
E --> H{Route Matches Role?}
F --> H
G --> H
H -->|Yes| I[Allow Access]
H -->|No| J[Redirect to Dashboard]
Loading
Available Routes
Candidate Routes
Route
Component
Description
/candidate/jobs
CandidateDashboard
Main dashboard with job listings
/candidate/best-matches
CandidateDashboard
AI-matched jobs only
/candidate/interviews
MyInterviews
View interview history
/candidate/resume-analysis
ResumeAnalysis
Analyze resume ATS score
/candidate/resume-builder
ResumeBuilder
Build AI-powered resume
/candidate/mock-interview
MockInterviewSetup
Set up mock interview
/candidate/mock-history
MockHistory
View mock interview history
/candidate/payment
Payment
Manage wallet & payments
/interview/:jobId
Interview
Live interview session
Recruiter Routes
Route
Component
Description
/recruiter/jobs
RecruiterDashboard
Main dashboard
/recruiter/post
PostJob
Create new job posting
/recruiter/edit-job/:jobId
EditJob
Edit existing job
/recruiter/job/:jobId/candidates
JobCandidates
View candidates for job
/recruiter/candidates
ManageCandidates
Manage all candidates
/recruiter/requests
InterviewRequests
Handle interview requests
Admin Routes
Route
Component
Description
/admin
AdminDashboard
Admin control panel
/admin/profile
AdminProfile
Admin profile settings
Shared Routes
Route
Component
Description
/
Home
Public landing page
/auth
Auth
Login/Register
/profile
Profile
User profile
/profile/:userId
Profile
View other user's profile
/report/:interviewId
InterviewReport
View interview report
Database Schema
Firestore Collections
erDiagram
USERS ||--o{ JOBS : recruiterUID
USERS ||--o{ INTERVIEWS : candidateUID
USERS ||--o{ INTERVIEW_REQUESTS : candidateUID
JOBS ||--o{ INTERVIEWS : jobId
JOBS ||--o{ INTERVIEW_REQUESTS : jobId
USERS ||--o{ TRANSACTIONS : userId
USERS {
string uid PK
string email
string fullname
string role "recruiter|candidate|admin"
number experience
string phone
string profilePhotoURL
string accountStatus "active|disabled"
timestamp createdAt
number walletCredits
}
JOBS {
string id PK
string title
string description
string companyName
string qualifications
timestamp applyDeadline
string interviewPermission "anyone|request"
string recruiterUID FK
string recruiterName
timestamp createdAt
}
INTERVIEWS {
string id PK
string jobId FK
string jobTitle
string candidateUID FK
string candidateName
string candidateEmail
array questions
array answers
array videoURLs
string feedback
string score
string resumeScore
string qnaScore
string status
timestamp submittedAt
}
INTERVIEW_REQUESTS {
string id PK
string jobId FK
string jobTitle
string candidateUID FK
string candidateName
string recruiterUID FK
string status "pending|accepted|rejected"
timestamp createdAt
timestamp respondedAt
}
TRANSACTIONS {
string id PK
string userId FK
number amount
string type "credit|debit"
string description
timestamp createdAt
}
Loading
Testing
Running the Application
# Development mode with hot reload
npm run dev
# Production preview
npm run build && npm run preview
Manual Testing Checklist
User registration flow (Candidate & Recruiter)
Login with valid/invalid credentials
Job posting and editing
Interview session with face detection
Resume upload and analysis
Payment flow with Razorpay
Admin dashboard functionality
Deployment
Netlify (Recommended)
The project includes a netlify.toml configuration file for easy deployment:
# Build the project
npm run build
# Deploy to Netlify# Drag and drop the 'dist' folder to Netlify# Or use Netlify CLI: netlify deploy --prod
Other Platforms
Platform
Build Command
Output Directory
Vercel
npm run build
dist
Firebase Hosting
npm run build
dist
GitHub Pages
npm run build
dist
Contributors
Developed and designed by:
Aaradhya Pathak - Full Stack Developer
Nimesh Kulkarni - Developer
Bhavesh Patil - Developer
Sanika Wadnekar - Developer
License
This project is licensed under the MIT License - see the LICENSE file for details.
InterviewXpert is a cutting-edge recruitment and interview preparation platform that leverages Artificial Intelligence and Computer Vision to revolutionize the hiring process. The platform serves three distinct user types: