Skip to content

Tayebbb/CareerPath

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

151 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CareerPath - AI-Powered Career Development Platform

An intelligent career guidance platform that helps students and fresh graduates discover job opportunities, identify skill gaps, and access personalized learning resources to advance their careers.


πŸ“‹ Table of Contents


🎯 Overview

CareerPath is a comprehensive career development platform that leverages AI and data analytics to:

  • Match users with suitable job opportunities based on their skills and preferences
  • Identify skill gaps between user profiles and job requirements
  • Recommend personalized learning resources to bridge skill gaps
  • Generate AI-powered career roadmaps using Google's Gemini AI
  • Provide interactive chatbot assistance for career guidance
  • Track job applications and learning progress

Aligned with UN Sustainable Development Goal 8 (Decent Work and Economic Growth), this platform empowers youth with the tools and resources needed for successful career development.


✨ Features

Core Features

βœ… User Authentication & Profile Management

  • Firebase Authentication (Email/Password, Google OAuth)
  • Comprehensive user profiles with skills, tools, experience level, and career preferences
  • Profile completion tracking

βœ… Intelligent Job Matching

  • Algorithm-based job matching using multi-factor scoring:
    • Skills compatibility (50% weight)
    • Experience level alignment (20% weight)
    • Career track matching (20% weight)
    • Location preferences (10% weight)
  • Real-time match score calculation
  • Job application tracking

βœ… Skill Gap Analysis

  • Automated identification of missing skills for target jobs
  • Personalized learning resource recommendations
  • Multi-source learning platform integration (Coursera, Udemy, YouTube, etc.)
  • Free and paid resource filtering
  • Search and filter functionality

βœ… AI-Powered Career Roadmap

  • Google Gemini AI integration for personalized career path generation
  • Context-aware recommendations based on user profile and career goals
  • Step-by-step learning paths with time estimates
  • Interactive roadmap visualization

βœ… Learning Resource Management

  • Curated learning resources mapped to specific skills
  • Platform, difficulty level, and cost filtering
  • Direct links to external learning platforms
  • Progress tracking (enrolled courses)

βœ… Admin Dashboard

  • Job posting management
  • Course management
  • User activity monitoring
  • Application tracking

βœ… AI-Powered Mock Interview

  • Role-based interview question generation (Software Engineer, Data Scientist, etc.)
  • Difficulty level selection (Easy, Medium, Hard)
  • Real-time answer evaluation using Gemini AI
  • Detailed feedback with:
    • Score (0-100)
    • Strengths identification
    • Areas for improvement
    • Suggested answers
  • Interview history tracking
  • Session performance analytics
  • Multiple interview rounds support

βœ… Interactive Career Chatbot

  • Gemini AI-powered conversational assistant
  • Career guidance and job search help
  • Skill development recommendations
  • Markdown-formatted responses with syntax highlighting
  • Chat history persistence
  • Context-aware conversations

🌐 External APIs & Services

1. Firebase (Google Cloud Platform)

Service: Backend-as-a-Service (BaaS)

APIs Used:

Configuration Required:

// Firebase Config (frontend/src/firebase.js)
const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID",
};

Setup Instructions:

  1. Create a Firebase project at https://console.firebase.google.com/
  2. Enable Authentication (Email/Password and Google providers)
  3. Create a Firestore database
  4. Copy configuration to your .env file
  5. Set up Firestore security rules and indexes

Rate Limits:

  • Spark (Free) Plan: 50,000 reads/day, 20,000 writes/day
  • Authentication: 10,000 verifications/month (free tier)

2. Google Gemini AI (Google Cloud AI)

Service: Large Language Model API

API Used:

  • Gemini 1.5 Pro API
    • Natural language understanding
    • Context-aware responses
    • Career roadmap generation
    • Chat assistance

Endpoints:

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro:generateContent

Documentation: https://ai.google.dev/docs

Configuration Required:

// Backend (.env)
GEMINI_API_KEY = AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8;

// Frontend (.env)
VITE_GEMINI_API_KEY = AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8;

Features Used:

  1. Career Roadmap Generation (frontend/src/pages/CareerRoadmap.jsx)

    • User profile analysis
    • Goal-based learning path creation
    • Time estimation for skill acquisition
    • Resource recommendations
  2. Chat Assistance (frontend/src/pages/Chatassistance.jsx, backend/main.py)

    • Career guidance chatbot
    • Context-aware conversations
    • History tracking
    • Markdown response rendering
  3. Mock Interview System (backend/main.py - /generate-interview-question, /evaluate-interview-answer)

    • Dynamic interview question generation based on role and difficulty
    • AI-powered answer evaluation with detailed feedback
    • Scoring system (0-100)
    • Personalized improvement suggestions

Setup Instructions:

  1. Visit https://makersuite.google.com/app/apikey
  2. Create a new API key
  3. Add to environment variables (both backend and frontend)

Rate Limits:

  • Free tier: 60 requests per minute
  • Context window: 32,000 tokens
  • Output limit: 8,192 tokens per request

Cost: Free tier available; paid plans start at $0.00025/1K input characters


3. Learning Platform APIs (Indirect)

Service: External Learning Resource Links

Platforms Integrated:

Implementation:

  • Direct URL links stored in Firestore learningResources collection
  • No API keys required (outbound links only)
  • Resources curated and maintained by platform admins

Data Structure:

{
  title: "Course/Tutorial Name",
  platform: "Coursera/Udemy/YouTube/etc.",
  skill: "Primary skill taught",
  relatedSkills: ["Additional", "Skills"],
  url: "https://platform.com/course-link",
  cost: "Free" | "Paid",
  difficulty: "Beginner" | "Intermediate" | "Advanced",
  description: "Course description"
}

4. Backend API (FastAPI - Python)

Service: Internal REST API for AI functionality

Framework: FastAPI (Python)

Deployment: Vercel Serverless Functions

Endpoints:

  1. Chat Endpoint
POST /chat
Content-Type: application/json

Body:
{
  "message": "User message",
  "history": [
    {"role": "user", "content": "Previous message"},
    {"role": "model", "content": "Previous response"}
  ]
}

Response:
{
  "reply": "AI-generated response"
}
  1. CV Analysis Endpoint
POST /summarize-cv
Content-Type: multipart/form-data

Body:
{
  "file": <PDF file>
}

Response:
{
  "data": {
    "keySkills": ["skill1", "skill2", ...],
    "toolsTechnologies": ["tool1", "tool2", ...],
    "rolesAndDomains": ["role1", "domain1", ...]
  },
  "raw_text": "Extracted text from PDF"
}
  1. Mock Interview - Generate Question
POST /generate-interview-question
Content-Type: application/json

Body:
{
  "role": "Software Engineer",
  "difficulty": "Medium",
  "questionNumber": 1,
  "previousQuestions": ["question1", "question2", ...]
}

Response:
{
  "question": "Generated interview question"
}
  1. Mock Interview - Evaluate Answer
POST /evaluate-interview-answer
Content-Type: application/json

Body:
{
  "question": "The interview question",
  "answer": "Candidate's answer",
  "role": "Software Engineer",
  "difficulty": "Medium"
}

Response:
{
  "score": 85,
  "strengths": ["Good technical knowledge", "Clear explanation"],
  "improvements": ["Add more examples", "Discuss edge cases"],
  "detailedFeedback": "Your answer demonstrates...",
  "suggestedAnswer": "A strong answer would include..."
}

Dependencies:

  • FastAPI (Web framework)
  • Uvicorn (ASGI server)
  • google-generativeai (Gemini SDK)
  • python-dotenv (Environment variables)
  • PyPDF2 (PDF text extraction)
  • python-multipart (File upload handling)

Setup:

cd backend
pip install -r requirements.txt
python main.py  # Local development
# Or deploy to Vercel using vercel.json configuration

CORS Configuration:

  • Allows all origins (*) for maximum compatibility
  • Supports all HTTP methods (GET, POST, PUT, DELETE, PATCH, OPTIONS)
  • Configured for both local development and production deployment

πŸš€ Tech Stack

Frontend

Technology Version Purpose
React 18.2.0 UI framework
Vite 5.4.21 Build tool & dev server
React Router DOM 6.x Client-side routing
Firebase SDK 10.x Authentication & Database
Framer Motion 11.x Animations
Lucide React Latest Icon library
React Hot Toast 2.x Notifications
TailwindCSS 3.x Utility-first CSS
React Markdown Latest Markdown rendering
Remark GFM Latest GitHub Flavored Markdown

Backend

Technology Version Purpose
Python 3.11+ Programming language
FastAPI Latest REST API framework
Uvicorn Latest ASGI server
Google Generative AI 1.50.1 Gemini API SDK
python-dotenv Latest Environment variables

Database

Service Type Purpose
Cloud Firestore NoSQL User data, jobs, resources

External Services

Service Purpose
Firebase Auth User authentication
Google Gemini AI AI-powered features
External Learning Platforms Learning resource links

πŸ“ Project Structure

IIUC_25_Version2.0/
β”œβ”€β”€ frontend/                          # React frontend application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/               # Reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ JobCard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProtectedRoute.jsx
β”‚   β”‚   β”‚   └── AdminProtectedRoute.jsx
β”‚   β”‚   β”œβ”€β”€ pages/                    # Route pages (lazy loaded)
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Register.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx        # User dashboard with skill gap resources
β”‚   β”‚   β”‚   β”œβ”€β”€ Jobs.jsx              # Job listings with match scores
β”‚   β”‚   β”‚   β”œβ”€β”€ Profile.jsx           # User profile management
β”‚   β”‚   β”‚   β”œβ”€β”€ CareerRoadmap.jsx    # AI-powered career roadmap
β”‚   β”‚   β”‚   β”œβ”€β”€ Chatassistance.jsx   # AI chatbot with markdown support
β”‚   β”‚   β”‚   β”œβ”€β”€ MockInterview.jsx    # AI-powered mock interview system
β”‚   β”‚   β”‚   β”œβ”€β”€ CvUpload.jsx         # CV analysis and skill extraction
β”‚   β”‚   β”‚   β”œβ”€β”€ LearningResources.jsx # Full learning resources page
β”‚   β”‚   β”‚   └── AdminPanel.jsx        # Admin dashboard
β”‚   β”‚   β”œβ”€β”€ contexts/
β”‚   β”‚   β”‚   └── AuthContext.jsx       # Authentication context provider
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── firestoreService.js   # Firebase database operations
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ matchScore.js         # Job matching algorithm
β”‚   β”‚   β”‚   └── getLearningSuggestions.js # Learning resource matching
β”‚   β”‚   β”œβ”€β”€ constants/
β”‚   β”‚   β”‚   β”œβ”€β”€ skillsDictionary.js   # Skill categories and search
β”‚   β”‚   β”‚   └── jobConstants.js       # Career tracks, experience levels
β”‚   β”‚   β”œβ”€β”€ firebase.js               # Firebase configuration
β”‚   β”‚   β”œβ”€β”€ App.jsx                   # Main app component with routes
β”‚   β”‚   └── main.jsx                  # Entry point
β”‚   β”œβ”€β”€ .env                          # Environment variables (not in git)
β”‚   β”œβ”€β”€ .env.example                  # Environment template
β”‚   β”œβ”€β”€ package.json                  # Frontend dependencies
β”‚   └── vite.config.js                # Vite build configuration
β”‚
β”œβ”€β”€ backend/                          # Python FastAPI backend
β”‚   β”œβ”€β”€ main.py                       # FastAPI application with all endpoints
β”‚   β”‚                                 # - /chat (Career chatbot)
β”‚   β”‚                                 # - /summarize-cv (CV analysis)
β”‚   β”‚                                 # - /generate-interview-question
β”‚   β”‚                                 # - /evaluate-interview-answer
β”‚   β”œβ”€β”€ vercel.json                   # Vercel deployment configuration
β”‚   β”œβ”€β”€ .env                          # Backend environment variables
β”‚   └── requirements.txt              # Python dependencies
β”‚
β”œβ”€β”€ README.md                         # This file
β”œβ”€β”€ PERFORMANCE_OPTIMIZATION_REPORT.md # Performance optimizations documentation
β”œβ”€β”€ SKILL_GAP_ANALYSIS_EXPLANATION.md # Skill gap system documentation
└── PROJECT_SUMMARY.md                # Project overview

πŸ› οΈ Installation & Setup

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Python (v3.11 or higher)
  • pip (Python package manager)
  • Firebase Account (for authentication and database)
  • Google Gemini API Key (for AI features)

1. Clone the Repository

git clone https://github.com/md-sazid9089/IIUC_25_Version2.0.git
cd IIUC_25_Version2.0

2. Backend Setup (Python FastAPI)

# Navigate to backend directory
cd backend

# Create virtual environment (recommended)
python -m venv venv

# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Create .env file
# Copy and rename .env.example to .env
# Add your Gemini API key:
echo "GEMINI_API_KEY=AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8" > .env

# Start the backend server
python main.py
# Server will run on http://localhost:8000

Backend Dependencies (requirements.txt):

fastapi
uvicorn[standard]
google-generativeai==1.50.1
python-dotenv
PyPDF2
python-multipart

3. Frontend Setup (React + Vite)

# Navigate to frontend directory (from project root)
cd frontend

# Install dependencies
npm install

# Create .env file
# Copy .env.example to .env and configure:

Frontend Environment Variables (.env):

# Firebase Configuration
VITE_FIREBASE_API_KEY=AIzaSyC8za3ZI4m9gUrYsueUum907vpuKzV8H0Q
VITE_FIREBASE_AUTH_DOMAIN=iiuc25.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=iiuc25
VITE_FIREBASE_STORAGE_BUCKET=iiuc25.firebasestorage.app
VITE_FIREBASE_MESSAGING_SENDER_ID=75690391713
VITE_FIREBASE_APP_ID=1:75690391713:web:4c72c5316547c8bc68d8e0

# Google Gemini API Key (for frontend AI features)
VITE_GEMINI_API_KEY=AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8

# Backend API URL
VITE_API_URL=http://localhost:8000
# Start the development server
npm run dev
# Frontend will run on http://localhost:5173 or http://localhost:5174

4. Firebase Configuration

  1. Create Firebase Project:

    • Go to Firebase Console
    • Click "Add project" and follow the setup wizard
    • Copy your project configuration
  2. Enable Authentication:

    • Go to Authentication β†’ Sign-in method
    • Enable Email/Password provider
    • Enable Google provider
    • Add authorized domain: localhost
  3. Create Firestore Database:

    • Go to Firestore Database
    • Click "Create database"
    • Choose "Start in test mode" (for development)
    • Select a location closest to your users
  4. Set Up Collections:

    • The app will automatically create collections on first use:
      • users - User profiles
      • jobs - Job listings
      • learningResources - Learning materials
      • applications - Job applications
      • Courses - Enrolled courses
      • chatbot - Chat history
  5. Create Composite Index (Required for Profile Page):

    • Go to Firestore Database β†’ Indexes
    • Click "Create Index"
    • Collection: applications
    • Fields:
      • userId (Ascending)
      • appliedAt (Descending)
    • Create the index (takes a few minutes)
  6. Firestore Security Rules (Development):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

5. Get Google Gemini API Key

  1. Visit Google AI Studio
  2. Sign in with your Google account
  3. Click "Create API Key"
  4. Copy the API key
  5. Add to both backend and frontend .env files

πŸ”§ Environment Variables

Backend (.env)

GEMINI_API_KEY=AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8

Frontend (.env)

# Firebase Configuration (get from Firebase Console)
VITE_FIREBASE_API_KEY=AIzaSyC8za3ZI4m9gUrYsueUum907vpuKzV8H0Q
VITE_FIREBASE_AUTH_DOMAIN=iiuc25.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=iiuc25
VITE_FIREBASE_STORAGE_BUCKET=iiuc25.firebasestorage.app
VITE_FIREBASE_MESSAGING_SENDER_ID=75690391713
VITE_FIREBASE_APP_ID=1:75690391713:web:4c72c5316547c8bc68d8e0

# Google Gemini API Key
VITE_GEMINI_API_KEY=AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8

# Backend API URL
VITE_API_URL=http://localhost:8000

πŸ’» Usage

Running the Application

  1. Start Backend Server:
cd backend
python main.py
# Backend API running at http://localhost:8000
  1. Start Frontend Development Server:
cd frontend
npm run dev
# Frontend running at http://localhost:5173 or http://localhost:5174
  1. Access the Application:
    • Open browser and navigate to http://localhost:5173 (or 5174)
    • Register a new account or login with existing credentials
    • Complete your profile with skills, tools, experience level, and preferences

User Workflow

  1. Register/Login:

    • Create account with email/password or Google OAuth
    • Complete initial profile setup
  2. Complete Profile:

    • Add skills, tools/technologies, experience level
    • Set career track and location preferences
    • Profile completion % shown in dashboard
  3. Browse Jobs:

    • View job listings with real-time match scores
    • Filter by location, experience level, career track
    • Apply to jobs directly from the platform
  4. Dashboard:

    • View profile completion status
    • See enrolled courses count
    • Access skill gap learning resources
    • Track applied jobs
  5. Skill Gap Analysis:

    • System automatically identifies missing skills
    • View personalized learning resource recommendations
    • Filter by platform, difficulty, cost
    • Enroll in courses
  6. Career Roadmap:

    • Generate AI-powered career roadmap using Gemini AI
    • Get step-by-step learning path based on your profile and goals
    • View time estimates and milestone recommendations
  7. AI Chat Assistant:

    • Ask career-related questions
    • Get personalized guidance from Gemini AI
    • Conversation history persists in session

Admin Features

  • Login with admin account
  • Access admin panel via /admin route
  • Manage jobs, courses, and learning resources
  • View user applications and platform statistics

πŸ“Š Performance Optimizations

This application has been optimized for production performance:

Implemented Optimizations

βœ… Route-Based Code Splitting

  • All pages lazy-loaded using React.lazy()
  • Reduces initial bundle size by 62% (850KB β†’ 320KB)
  • Faster initial page load (2.4s β†’ 0.9s FCP)

βœ… React Performance Hooks

  • useMemo for expensive calculations (match scores, profile completion)
  • useCallback for all event handlers and functions
  • Prevents unnecessary re-renders (70% reduction)

βœ… Component Memoization

  • React.memo on frequently re-rendering components
  • Optimized prop comparison

βœ… Build Optimization

  • Manual chunk splitting (vendor, firebase, ui chunks)
  • Tree-shaking to remove unused code
  • Terser minification with console.log removal
  • Source maps disabled in production

βœ… React Router v7 Flags

  • v7_startTransition for smooth transitions
  • v7_relativeSplatPath for better routing

Performance Metrics

Metric Before After Improvement
Lighthouse Score 62 94 +52%
Initial Bundle 850 KB 320 KB 62% smaller
First Contentful Paint 2.4s 0.9s 62% faster
Time to Interactive 5.2s 2.1s 60% faster
Component Re-renders 350/min 105/min 70% reduction
Memory Usage 145 MB 82 MB 43% reduction

For detailed performance optimization documentation, see PERFORMANCE_OPTIMIZATION_REPORT.md.


πŸ“– Documentation


πŸ§ͺ Testing

Frontend Testing

cd frontend
npm run build  # Test production build
npm run preview  # Preview production build

Backend Testing

cd backend
# Test chat endpoint
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello", "history": []}'

πŸš€ Deployment

Frontend Deployment (Vercel/Netlify)

  1. Build the production bundle:
cd frontend
npm run build
  1. Deploy the dist folder:

    • Vercel: Connect GitHub repo and deploy automatically
    • Netlify: Drag and drop dist folder or connect repo
  2. Set environment variables in hosting platform dashboard

Backend Deployment (Railway/Render)

  1. Create Procfile:
web: uvicorn main:app --host 0.0.0.0 --port $PORT
  1. Deploy to Railway/Render:

    • Connect GitHub repository
    • Set environment variables (GEMINI_API_KEY)
    • Deploy automatically on push
  2. Update frontend VITE_API_URL to production backend URL


🀝 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 developed as part of an academic project aligned with UN Sustainable Development Goal 8 (Decent Work and Economic Growth).


πŸ™ Acknowledgments

  • Google Gemini AI for powering intelligent career guidance features
  • Firebase for authentication and database infrastructure
  • React and Vite for excellent developer experience
  • External learning platforms (Coursera, Udemy, freeCodeCamp, etc.) for educational resources

Built with ❀️ to empower youth career development and support UN SDG 8

About

An intelligent career guidance platform that helps students and fresh graduates discover job opportunities, identify skill gaps, and access personalized learning resources to advance their careers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 96.1%
  • Python 2.6%
  • Other 1.3%