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.
- Overview
- Features
- External APIs & Services
- Tech Stack
- Project Structure
- Installation & Setup
- Environment Variables
- Usage
- Performance Optimizations
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.
β 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
Service: Backend-as-a-Service (BaaS)
APIs Used:
-
Firebase Authentication API
- Email/Password authentication
- Google OAuth 2.0 sign-in
- User session management
- Documentation: https://firebase.google.com/docs/auth
-
Cloud Firestore API
- NoSQL document database
- Real-time data synchronization
- Collections:
users,jobs,learningResources,applications,Courses,chatbot - Documentation: https://firebase.google.com/docs/firestore
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:
- Create a Firebase project at https://console.firebase.google.com/
- Enable Authentication (Email/Password and Google providers)
- Create a Firestore database
- Copy configuration to your
.envfile - 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)
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:
-
Career Roadmap Generation (
frontend/src/pages/CareerRoadmap.jsx)- User profile analysis
- Goal-based learning path creation
- Time estimation for skill acquisition
- Resource recommendations
-
Chat Assistance (
frontend/src/pages/Chatassistance.jsx,backend/main.py)- Career guidance chatbot
- Context-aware conversations
- History tracking
- Markdown response rendering
-
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:
- Visit https://makersuite.google.com/app/apikey
- Create a new API key
- 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
Service: External Learning Resource Links
Platforms Integrated:
- Coursera (https://www.coursera.org/)
- Udemy (https://www.udemy.com/)
- YouTube (https://www.youtube.com/)
- freeCodeCamp (https://www.freecodecamp.org/)
- Khan Academy (https://www.khanacademy.org/)
- Codecademy (https://www.codecademy.com/)
Implementation:
- Direct URL links stored in Firestore
learningResourcescollection - 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"
}Service: Internal REST API for AI functionality
Framework: FastAPI (Python)
Deployment: Vercel Serverless Functions
- Frontend: https://careerpath-weld.vercel.app
- Backend: https://backendcareerpath.vercel.app
Endpoints:
- 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"
}
- 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"
}
- 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"
}
- 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 configurationCORS 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
| 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 |
| 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 |
| Service | Type | Purpose |
|---|---|---|
| Cloud Firestore | NoSQL | User data, jobs, resources |
| Service | Purpose |
|---|---|
| Firebase Auth | User authentication |
| Google Gemini AI | AI-powered features |
| External Learning Platforms | Learning resource links |
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
- 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)
git clone https://github.com/md-sazid9089/IIUC_25_Version2.0.git
cd IIUC_25_Version2.0# 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:8000Backend Dependencies (requirements.txt):
fastapi
uvicorn[standard]
google-generativeai==1.50.1
python-dotenv
PyPDF2
python-multipart
# 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-
Create Firebase Project:
- Go to Firebase Console
- Click "Add project" and follow the setup wizard
- Copy your project configuration
-
Enable Authentication:
- Go to Authentication β Sign-in method
- Enable Email/Password provider
- Enable Google provider
- Add authorized domain:
localhost
-
Create Firestore Database:
- Go to Firestore Database
- Click "Create database"
- Choose "Start in test mode" (for development)
- Select a location closest to your users
-
Set Up Collections:
- The app will automatically create collections on first use:
users- User profilesjobs- Job listingslearningResources- Learning materialsapplications- Job applicationsCourses- Enrolled courseschatbot- Chat history
- The app will automatically create collections on first use:
-
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)
-
Firestore Security Rules (Development):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}- Visit Google AI Studio
- Sign in with your Google account
- Click "Create API Key"
- Copy the API key
- Add to both backend and frontend
.envfiles
GEMINI_API_KEY=AIzaSyCocHsm5Efg84WIiEyNh_DkVkiAbbV5JC8# 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- Start Backend Server:
cd backend
python main.py
# Backend API running at http://localhost:8000- Start Frontend Development Server:
cd frontend
npm run dev
# Frontend running at http://localhost:5173 or http://localhost:5174- 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
- Open browser and navigate to
-
Register/Login:
- Create account with email/password or Google OAuth
- Complete initial profile setup
-
Complete Profile:
- Add skills, tools/technologies, experience level
- Set career track and location preferences
- Profile completion % shown in dashboard
-
Browse Jobs:
- View job listings with real-time match scores
- Filter by location, experience level, career track
- Apply to jobs directly from the platform
-
Dashboard:
- View profile completion status
- See enrolled courses count
- Access skill gap learning resources
- Track applied jobs
-
Skill Gap Analysis:
- System automatically identifies missing skills
- View personalized learning resource recommendations
- Filter by platform, difficulty, cost
- Enroll in courses
-
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
-
AI Chat Assistant:
- Ask career-related questions
- Get personalized guidance from Gemini AI
- Conversation history persists in session
- Login with admin account
- Access admin panel via
/adminroute - Manage jobs, courses, and learning resources
- View user applications and platform statistics
This application has been optimized for production performance:
β 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
useMemofor expensive calculations (match scores, profile completion)useCallbackfor all event handlers and functions- Prevents unnecessary re-renders (70% reduction)
β Component Memoization
React.memoon 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_startTransitionfor smooth transitionsv7_relativeSplatPathfor better routing
| 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.
- PERFORMANCE_OPTIMIZATION_REPORT.md - Comprehensive performance optimization documentation with before/after metrics
- SKILL_GAP_ANALYSIS_EXPLANATION.md - Technical documentation of the skill gap analysis algorithm and system
- PROJECT_SUMMARY.md - High-level project overview and objectives
cd frontend
npm run build # Test production build
npm run preview # Preview production buildcd backend
# Test chat endpoint
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{"message": "Hello", "history": []}'- Build the production bundle:
cd frontend
npm run build-
Deploy the
distfolder:- Vercel: Connect GitHub repo and deploy automatically
- Netlify: Drag and drop
distfolder or connect repo
-
Set environment variables in hosting platform dashboard
- Create
Procfile:
web: uvicorn main:app --host 0.0.0.0 --port $PORT
-
Deploy to Railway/Render:
- Connect GitHub repository
- Set environment variables (GEMINI_API_KEY)
- Deploy automatically on push
-
Update frontend
VITE_API_URLto production backend URL
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 developed as part of an academic project aligned with UN Sustainable Development Goal 8 (Decent Work and Economic Growth).
- 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