Skip to content

dhruv-code297/JobFit-AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

JobFit AI

AI-powered resume analysis and job matching platform built with a React + Vite frontend and an Express + MongoDB backend.

Resume Analyzer

Overview

JobFit AI helps users:

  • Upload resumes (PDF)
  • Get ATS scoring with deterministic + AI-assisted evaluation
  • Extract technical and soft skills
  • Generate AI-improved resume content
  • Match resumes against a jobs dataset
  • Identify role-specific skill gaps

Core Features

  • Authentication with JWT (signup, login, me)
  • Resume upload + text extraction (multer + pdf-parse)
  • AI analysis with provider fallback (Gemini first, Groq fallback)
  • ATS breakdown and normalized scoring
  • Job search and skill-based match scoring
  • Skill-gap analysis with learning path suggestions
  • Responsive, animated frontend (Tailwind + Framer Motion)

Tech Stack

Frontend (client):

  • React 18
  • Vite 4
  • Tailwind CSS
  • Framer Motion
  • React Router DOM

Backend (server):

  • Node.js + Express
  • MongoDB + Mongoose
  • JWT + bcryptjs
  • Multer + pdf-parse
  • Google Gemini + Groq SDK

Project Structure

JobFit AI/
|- client/
|  |- src/
|  |  |- components/
|  |  |- context/
|  |  |- hooks/
|  |  |- pages/
|  |  |- services/
|  |  |- styles/
|  |  |- utils/
|  |  |- App.jsx
|  |  |- main.jsx
|  |- package.json
|- server/
|  |- controllers/
|  |- middleware/
|  |- models/
|  |- routes/
|  |- services/
|  |- uploads/
|  |- utils/
|  |- server.js
|  |- package.json
|- README.md

Getting Started

Prerequisites

  • Node.js 18+
  • npm 9+
  • MongoDB database (local or Atlas)
  • Gemini API key (recommended)
  • Optional: Groq API key (fallback)

1) Install Dependencies

cd server
npm install

cd ../client
npm install

2) Configure Environment Variables

Create server/.env:

PORT=5000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/jobfit-ai
JWT_SECRET=change_this_to_a_long_random_secret
CORS_ORIGIN=http://localhost:5173

GEMINI_API_KEY=your_gemini_api_key
GROQ_API_KEY=your_groq_api_key_optional
GROQ_MODELS=llama-3.3-70b-versatile,llama-3.1-8b-instant

Create client/.env:

VITE_API_URL=http://localhost:5000/api

3) Run the App (Two Terminals)

Terminal 1:

cd server
npm run dev

Terminal 2:

cd client
npm run dev

Open http://localhost:5173

Available Scripts

Server (server/package.json):

  • npm run dev - Start API with nodemon
  • npm start - Start API with node

Client (client/package.json):

  • npm run dev - Start Vite dev server
  • npm run build - Build production bundle
  • npm run preview - Preview production build
  • npm run lint - Run ESLint

API Overview

Base URL: http://localhost:5000/api

Health:

  • GET /health

Auth:

  • POST /auth/signup
  • POST /auth/login
  • GET /auth/me (protected)

Resume:

  • POST /resume/upload (protected, multipart/form-data, field: resume)
  • GET /resume (protected)
  • GET /resume/:id (protected)
  • DELETE /resume/:id (protected)

Analysis:

  • POST /analysis/analyze (protected, body: { "resumeId": "..." })
  • POST /analysis/improve (protected, body: { "resumeId": "..." })
  • POST /analysis/skill-gap (protected, body: { "resumeId": "...", "jobId": "..." })

Jobs:

  • GET /jobs (protected)
  • GET /jobs/:id (protected)
  • POST /jobs/match (protected, body: { "skills": ["..."] })

Request Flow

  1. User signs up/logs in and gets JWT.
  2. User uploads a PDF resume.
  3. Backend extracts text and stores a resume record.
  4. Analysis endpoint runs AI analysis with provider fallback.
  5. ATS scoring and job matching are computed and returned.
  6. User can run improvement and skill-gap analysis endpoints.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors