Skip to content

amritbej/career-pilot

Β 
Β 

Repository files navigation

πŸš€ careerpilot - AI Career Platform

Β  Β 
Β  Β 

An intelligent, AI-powered career platform that revolutionizes the job hunting experience through automated resume enhancement, intelligent job matching, AI mock interviews, corporate fellowships, and community-driven networking.

Live Demo β€’ Features β€’ Tech Stack β€’ Getting Started β€’ API Reference β€’ Architecture β€’ Contributing


πŸ“‹ Table of Contents


🌟 Overview

The AI Resume Builder & Career Platform is a comprehensive full-stack application designed to streamline and enhance the job search process. By leveraging cutting-edge AI technology (Google Gemini 2.5), real-time communication via Socket.IO, and intelligent automation through BullMQ job queues, this platform provides job seekers with powerful tools to:

  • Create ATS-optimized resumes tailored to specific job roles
  • Receive personalized job alerts based on custom preferences
  • Track job applications through an intuitive pipeline interface
  • Connect with fellow job seekers through a real-time community platform
  • Get AI-powered insights and improvement suggestions

❓ Problem Statement

The Modern Job Seeker's Challenges

  1. Resume Optimization Struggles: Job seekers spend countless hours formatting resumes without knowing if they'll pass Applicant Tracking Systems (ATS)

  2. Information Overload: With thousands of job postings across multiple platforms, finding relevant opportunities is overwhelming

  3. Application Tracking Chaos: Managing applications across different companies leads to missed follow-ups and forgotten deadlines

  4. Isolation in Job Search: The job hunting process is often lonely, with limited access to peer support and shared experiences

  5. Skill Gap Identification: Difficulty understanding what skills to highlight or develop for target roles

  6. Time-Consuming Process: Manual job searching, resume customization, and application tracking consumes significant time


πŸ’‘ Our Solution

Comprehensive Career Platform

Challenge Solution
Resume Optimization AI-powered resume enhancement using Google Gemini 2.5 with ATS scoring and Harvard-format templates
Information Overload Smart job alerts with customizable filters (keywords, location, salary, employment type)
Application Tracking Visual Kanban-style job tracker with status management (Saved β†’ Applied β†’ Interviewing β†’ Offered)
Isolation Real-time community platform with channels, posts, direct messaging, and presence indicators
Skill Gaps AI-generated improvement suggestions and professional summary generation
Time Consumption Automated job fetching, bulk processing via queues, and one-click resume downloads

✨ Features

πŸ€– AI-Powered Resume Enhancement

  • Smart Resume Enhancement: Transform ordinary resumes into ATS-optimized documents
  • Professional Summary Generation: AI-crafted summaries tailored to target roles
  • Improvement Suggestions: Actionable recommendations to strengthen your resume
  • ATS Score Analysis: Get compatibility scores with detailed feedback
  • Harvard Template Formatting: Industry-standard resume formatting

πŸ“„ Resume Management

  • PDF Upload & Parsing: Extract text from uploaded PDF resumes
  • Multiple Resume Support: Manage different versions for various roles
  • PDF Download: Export enhanced resumes as professional PDFs
  • Version History: Track original and enhanced versions

πŸ”” Intelligent Job Alerts

  • Custom Alert Creation: Set preferences for keywords, location, salary range
  • Remote Work Filters: Find remote-only opportunities
  • Employment Type Selection: Full-time, Part-time, Contract, Internship
  • Email Notifications: Receive new job matches directly in your inbox
  • Real-time Socket Updates: Instant in-app notifications when new jobs match

Note: By default, job alerts use the cron schedule 0 0 */2 * * to reduce API costs. This means they run at midnight on every other day of the month (a day-of-month step), not on a strict 48-hour interval, so behavior can differ around month boundaries. You can override this schedule with the ALERT_CRON_SCHEDULE environment variable.

πŸ“Š Job Application Tracker

  • Visual Pipeline: Kanban-style board for application status
  • Status Management: Track from Saved β†’ Applied β†’ Interviewing β†’ Offered β†’ Rejected
  • Notes & Comments: Add personal notes to each application
  • Statistics Dashboard: Overview of application metrics
  • Quick Actions: Easy status updates and job removal

🌐 Community Platform

  • Real-time Channels: Topic-based discussion channels
  • Posts & Feed: Share experiences, tips, and opportunities
  • Comments & Reactions: Engage with community content
  • Direct Messaging: Private conversations with other members
  • Presence Indicators: See who's online in real-time
  • Member Discovery: Find and connect with fellow job seekers

πŸŽ“ careerpilot Fellowships

  • Corporate Challenges: Companies post real-world challenges for students
  • Student Proposals: Students submit proposals with cover letters and pricing
  • Proposal Review: Companies review, accept, or reject proposals
  • Escrow Payments: Razorpay integration for secure payments
  • Real-time Chat: Direct messaging between corporate and students
  • Challenge Completion: Fund release upon satisfactory completion
  • Student Verification: Academic email verification system

🎀 AI Interview Prep

  • Mock Interviews: AI-powered interview simulations
  • Role-Specific Questions: Tailored questions based on target role
  • Real-time Feedback: Instant AI evaluation of responses
  • Performance Scoring: Detailed scoring with improvement suggestions
  • Interview History: Track progress across multiple sessions
  • Multi-Round Support: Technical, behavioral, and HR round simulations

πŸ’³ Payments (Razorpay)

  • Secure Payments: PCI-DSS compliant payment processing
  • Multiple Payment Methods: UPI, Cards, NetBanking, Wallets, QR Code
  • Escrow System: Funds held securely until work completion
  • Fund Release: One-click release when satisfied with deliverables
  • Payment History: Complete transaction tracking

πŸ” Authentication & Security

  • Firebase Authentication: Secure email/password and Google OAuth
  • JWT Token Verification: Protected API endpoints
  • Rate Limiting: Protection against abuse
  • Helmet Security Headers: Enhanced HTTP security

πŸ›  Tech Stack

Frontend

Technology Purpose
React 19 UI library with latest features
Vite 7 Fast build tool and dev server
TailwindCSS 4 Utility-first CSS framework
Framer Motion Animation library
React Router 7 Client-side routing
Socket.IO Client Real-time communication
Firebase SDK Authentication & client services
Zustand State management
React Hook Form Form handling
Lucide React Icon library

Backend

Technology Purpose
Node.js 18+ JavaScript runtime
Express.js Web framework
Socket.IO WebSocket server
Firebase Admin SDK Server-side Firebase services
MongoDB + Mongoose Database & ODM
BullMQ + IORedis Job queue for background tasks
Google Gemini AI AI/ML for resume enhancement & interviews
Razorpay Payment processing & escrow
Nodemailer Email notifications
PDFKit PDF generation
Node-Cron Scheduled tasks

Infrastructure

Technology Purpose
Firebase Auth, Firestore, Storage
MongoDB Atlas Cloud database
Redis Queue backend
RapidAPI Job search integration

πŸš€ Getting Started

Prerequisites

  • Node.js 18.0 or higher
  • npm or yarn
  • MongoDB instance (local or Atlas)
  • Redis instance (for job queue)
  • Firebase project with Firestore enabled
  • Google Gemini API key
  • RapidAPI key (for job fetching)

Environment Variables

Backend (.env)

# Server
PORT=5000
NODE_ENV=development
FRONTEND_URL=http://localhost:5173

# MongoDB
MONGODB_URI=mongodb://localhost:27017/career-pilot

# Firebase Admin
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-bucket.appspot.com
FIREBASE_SERVICE_ACCOUNT={"type":"service_account",...}

# AI
GEMINI_API_KEY=your-gemini-api-key

# Redis (for BullMQ)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=optional-password

# RapidAPI (Job Search)
RAPID_API_KEY=your-rapidapi-key
RAPID_API_HOST=jsearch.p.rapidapi.com

# Email (Nodemailer)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password

# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100

# Razorpay (Payment Gateway)
RAZORPAY_KEY_ID=rzp_test_xxxxxxxxxxxxx
RAZORPAY_KEY_SECRET=your-razorpay-secret

Frontend (.env)

VITE_API_URL=http://localhost:5000
VITE_FIREBASE_API_KEY=your-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-bucket.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
VITE_FIREBASE_APP_ID=your-app-id

Installation

  1. Clone the repository
git clone https://github.com/ishwari418/career-pilot.git
cd career-pilot
  1. Install backend dependencies
cd backend
npm install
  1. Install frontend dependencies
cd ../frontend
npm install
  1. Set up environment variables
# Create .env files in both backend and frontend directories
# Use the templates above
  1. Start the development servers

Backend:

cd backend
npm run dev

Frontend:

cd frontend
npm run dev
  1. Access the application

πŸ“ Project Structure

career-pilot/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ package.json
β”‚   └── src/
β”‚       β”œβ”€β”€ index.js                 # Server entry point
β”‚       β”œβ”€β”€ config/
β”‚       β”‚   β”œβ”€β”€ firebase.js          # Firebase Admin initialization
β”‚       β”‚   β”œβ”€β”€ langchain.js         # AI/Gemini configuration
β”‚       β”‚   └── socket.js            # Socket.IO setup
β”‚       β”œβ”€β”€ controllers/
β”‚       β”‚   β”œβ”€β”€ communityFirebaseController.js  # Community features
β”‚       β”‚   └── jobFetch.js          # Job fetching logic
β”‚       β”œβ”€β”€ middleware/
β”‚       β”‚   β”œβ”€β”€ auth.js              # JWT verification
β”‚       β”‚   β”œβ”€β”€ errorHandler.js      # Global error handling
β”‚       β”‚   β”œβ”€β”€ socketAuth.js        # Socket authentication
β”‚       β”‚   └── upload.js            # File upload handling
β”‚       β”œβ”€β”€ models/
β”‚       β”‚   β”œβ”€β”€ Job.model.js         # Job schema
β”‚       β”‚   β”œβ”€β”€ JobAlert.model.js    # Alert preferences
β”‚       β”‚   β”œβ”€β”€ JobListing.model.js  # Fetched jobs
β”‚       β”‚   β”œβ”€β”€ NotificationLog.model.js  # Email logs
β”‚       β”‚   β”œβ”€β”€ Resume.model.js      # User resumes
β”‚       β”‚   β”œβ”€β”€ TrackedJob.model.js  # Application tracking
β”‚       β”‚   └── User.model.js        # User profiles
β”‚       β”œβ”€β”€ routes/
β”‚       β”‚   β”œβ”€β”€ auth.js              # Authentication
β”‚       β”‚   β”œβ”€β”€ community.js         # Community features
β”‚       β”‚   β”œβ”€β”€ enhance.js           # AI enhancement
β”‚       β”‚   β”œβ”€β”€ fellowships.js       # Fellowship challenges & proposals
β”‚       β”‚   β”œβ”€β”€ interview.js         # AI mock interviews
β”‚       β”‚   β”œβ”€β”€ jobAlerts.js         # Job alerts CRUD
β”‚       β”‚   β”œβ”€β”€ jobsRoute.js         # Job search
β”‚       β”‚   β”œβ”€β”€ jobTracker.js        # Application tracking
β”‚       β”‚   β”œβ”€β”€ payments.js          # Razorpay payments & escrow
β”‚       β”‚   β”œβ”€β”€ resume.js            # Resume management
β”‚       β”‚   └── upload.js            # File uploads
β”‚       β”œβ”€β”€ services/
β”‚       β”‚   β”œβ”€β”€ firebaseDataService.js    # Firebase operations
β”‚       β”‚   β”œβ”€β”€ interviewService.js       # AI interview logic
β”‚       β”‚   β”œβ”€β”€ jobAlertQueue.js          # BullMQ queue
β”‚       β”‚   β”œβ”€β”€ jobAlertSocket.js         # Real-time notifications
β”‚       β”‚   β”œβ”€β”€ jobFetcher.js             # Automated job fetching
β”‚       β”‚   β”œβ”€β”€ mailService.js            # Email sending
β”‚       β”‚   β”œβ”€β”€ notificationServices.js   # Push notifications
β”‚       β”‚   β”œβ”€β”€ paymentService.js         # Razorpay integration
β”‚       β”‚   β”œβ”€β”€ presenceService.js        # User presence
β”‚       β”‚   β”œβ”€β”€ rapidApiService.js        # Job API integration
β”‚       β”‚   └── socketServiceFirebase.js  # Socket handlers
β”‚       └── utils/
β”‚           β”œβ”€β”€ jobSearch.js         # Search utilities
β”‚           └── queueManager.js      # Queue management
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ vite.config.js
β”‚   β”œβ”€β”€ index.html
β”‚   └── src/
β”‚       β”œβ”€β”€ App.jsx                  # Root component
β”‚       β”œβ”€β”€ main.jsx                 # Entry point
β”‚       β”œβ”€β”€ index.css                # Global styles
β”‚       β”œβ”€β”€ components/
β”‚       β”‚   β”œβ”€β”€ Button.jsx           # Reusable button
β”‚       β”‚   β”œβ”€β”€ Card.jsx             # Card component
β”‚       β”‚   β”œβ”€β”€ FileUpload.jsx       # Drag & drop upload
β”‚       β”‚   β”œβ”€β”€ Input.jsx            # Form input
β”‚       β”‚   β”œβ”€β”€ JobAlertModal.jsx    # Alert creation modal
β”‚       β”‚   β”œβ”€β”€ JobAlertsList.jsx    # Alerts display
β”‚       β”‚   β”œβ”€β”€ Layout.jsx           # Page layout
β”‚       β”‚   β”œβ”€β”€ Navbar.jsx           # Navigation bar
β”‚       β”‚   β”œβ”€β”€ community/           # Community components
β”‚       β”‚   β”‚   β”œβ”€β”€ ChannelList.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ ChatWindow.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ DirectMessages.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ MembersList.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ MessageBubble.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ MessageInput.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ PostCard.jsx
β”‚       β”‚   β”‚   β”œβ”€β”€ PostEditor.jsx
β”‚       β”‚   β”‚   └── PostsFeed.jsx
β”‚       β”‚   └── ui/                  # UI components
β”‚       β”‚       β”œβ”€β”€ AnimatedText.jsx
β”‚       β”‚       β”œβ”€β”€ CTASection.jsx
β”‚       β”‚       β”œβ”€β”€ FeaturesSection.jsx
β”‚       β”‚       β”œβ”€β”€ Footer.jsx
β”‚       β”‚       β”œβ”€β”€ Globe.jsx
β”‚       β”‚       β”œβ”€β”€ HeroSection.jsx
β”‚       β”‚       └── WorldMap.jsx
β”‚       β”œβ”€β”€ config/
β”‚       β”‚   └── firebase.js          # Firebase client config
β”‚       β”œβ”€β”€ context/
β”‚       β”‚   β”œβ”€β”€ AuthContext.jsx      # Auth state management
β”‚       β”‚   └── SocketContext.jsx    # Socket.IO context
β”‚       β”œβ”€β”€ hooks/
β”‚       β”‚   β”œβ”€β”€ usePresence.js       # User presence hook
β”‚       β”‚   └── useSocket.js         # Socket hook
β”‚       β”œβ”€β”€ lib/
β”‚       β”‚   └── utils.js             # Utility functions
β”‚       β”œβ”€β”€ pages/
β”‚       β”‚   β”œβ”€β”€ Community.jsx        # Community page
β”‚       β”‚   β”œβ”€β”€ Dashboard.jsx        # Main dashboard
β”‚       β”‚   β”œβ”€β”€ Enhance.jsx          # Resume enhancement
β”‚       β”‚   β”œβ”€β”€ Home.jsx             # Landing page
β”‚       β”‚   β”œβ”€β”€ InterviewPrep.jsx    # AI mock interviews
β”‚       β”‚   β”œβ”€β”€ JobAlerts.jsx        # Alerts management
β”‚       β”‚   β”œβ”€β”€ JobSearch.jsx        # Job search page
β”‚       β”‚   β”œβ”€β”€ JobTracker.jsx       # Application tracker
β”‚       β”‚   β”œβ”€β”€ Login.jsx            # Login page
β”‚       β”‚   β”œβ”€β”€ Register.jsx         # Registration page
β”‚       β”‚   β”œβ”€β”€ ResumeView.jsx       # Resume display
β”‚       β”‚   β”œβ”€β”€ Upload.jsx           # Resume upload
β”‚       β”‚   └── fellowship/          # Fellowship feature
β”‚       β”‚       β”œβ”€β”€ ChallengeDetail.jsx
β”‚       β”‚       β”œβ”€β”€ ChallengeProposals.jsx
β”‚       β”‚       β”œβ”€β”€ Challenges.jsx
β”‚       β”‚       β”œβ”€β”€ CreateChallenge.jsx
β”‚       β”‚       β”œβ”€β”€ FellowshipChat.jsx
β”‚       β”‚       β”œβ”€β”€ FellowshipLayout.jsx
β”‚       β”‚       β”œβ”€β”€ FellowshipMessages.jsx
β”‚       β”‚       β”œβ”€β”€ MyChallenges.jsx
β”‚       β”‚       β”œβ”€β”€ MyProposals.jsx
β”‚       β”‚       β”œβ”€β”€ Onboarding.jsx
β”‚       β”‚       └── Verify.jsx
β”‚       └── services/
β”‚           β”œβ”€β”€ api.js               # API service layer
β”‚           └── socket.js            # Socket client
└── firebase/
    β”œβ”€β”€ firestore.indexes.json       # Firestore indexes
    β”œβ”€β”€ firestore.rules              # Security rules
    └── storage.rules                # Storage security

πŸ”Œ API Routes

Authentication

Method Endpoint Description
POST /api/auth/verify Verify Firebase token
GET /api/auth/profile Get user profile

Upload

Method Endpoint Description
POST /api/upload Upload and parse PDF resume
POST /api/upload/extract-text Extract text from PDF

Resume Management

Method Endpoint Description
GET /api/resumes Get all user resumes
GET /api/resumes/:resumeId Get specific resume
POST /api/resumes Create new resume
PUT /api/resumes/:resumeId Update resume
DELETE /api/resumes/:resumeId Delete resume
GET /api/resumes/:resumeId/download Download as PDF

AI Enhancement

Method Endpoint Description
POST /api/enhance Enhance resume with AI
POST /api/enhance/summary Generate professional summary
POST /api/enhance/suggestions Get improvement suggestions
POST /api/enhance/ats-analysis Analyze ATS compatibility

Job Search

Method Endpoint Description
GET /api/fetchjobs Search for jobs

Job Alerts

Method Endpoint Description
GET /api/job-alerts Get all alerts
GET /api/job-alerts/stats/summary Get alert statistics
GET /api/job-alerts/:id Get specific alert
POST /api/job-alerts Create new alert
PUT /api/job-alerts/:id Update alert
DELETE /api/job-alerts/:id Delete alert

Job Tracker

Method Endpoint Description
GET /api/job-tracker Get all tracked jobs
GET /api/job-tracker/stats Get tracking statistics
POST /api/job-tracker Track new job
PUT /api/job-tracker/:trackerId Update job status
DELETE /api/job-tracker/:trackerId Remove tracked job

Community

Method Endpoint Description
GET /api/community/channels Get all channels
POST /api/community/channels Create channel
GET /api/community/channels/:channelId/messages Get channel messages
GET /api/community/posts Get all posts
POST /api/community/posts Create post
POST /api/community/posts/:postId/like Toggle like
GET /api/community/posts/:postId/comments Get comments
POST /api/community/posts/:postId/comments Add comment
GET /api/community/conversations Get DM conversations
GET /api/community/online-users Get online users

Fellowships

Method Endpoint Description
GET /api/fellowship/profile Get fellowship profile
POST /api/fellowship/profile Create/update profile
POST /api/fellowship/verify/send-email Send verification email
POST /api/fellowship/verify/confirm Confirm verification code
GET /api/fellowship/challenges Get all challenges
POST /api/fellowship/challenges Create challenge (Corporate)
GET /api/fellowship/challenges/:id Get challenge details
DELETE /api/fellowship/challenges/:id Delete challenge
POST /api/fellowship/challenges/:id/apply Apply to challenge (Student)
GET /api/fellowship/challenges/:id/proposals Get proposals for challenge
PUT /api/fellowship/proposals/:id/status Accept/reject proposal
GET /api/fellowship/my-challenges Get my challenges (Corporate)
GET /api/fellowship/my-proposals Get my proposals (Student)
GET /api/fellowship/chat/rooms Get chat rooms
GET /api/fellowship/chat/rooms/:roomId Get chat room details
GET /api/fellowship/chat/rooms/:roomId/messages Get messages
POST /api/fellowship/chat/rooms/:roomId/messages Send message

Interview Prep

Method Endpoint Description
POST /api/interview/start Start mock interview
POST /api/interview/:id/answer Submit answer
POST /api/interview/:id/complete Complete interview
GET /api/interview/:id Get interview details
GET /api/interview/history Get interview history

Payments

Method Endpoint Description
POST /api/payments/create-order Create Razorpay order
POST /api/payments/verify-payment Verify payment & accept proposal
POST /api/payments/release-funds/:roomId Release escrow funds
GET /api/payments/status/:roomId Get payment status

πŸ“š For complete API documentation, see API_DOCS/README.md


🎯 Feature Details

Resume Enhancement Pipeline

  1. Upload: User uploads PDF resume
  2. Extraction: pdf-parse extracts text content
  3. Analysis: Text sent to Gemini AI with job role preferences
  4. Enhancement: AI generates optimized Harvard-format resume
  5. Storage: Enhanced resume saved to MongoDB
  6. Download: User can download as formatted PDF

Job Alert System

  1. Alert Creation: User sets keywords, location, salary filters
  2. Queue Processing: BullMQ handles alerts in background
  3. Job Fetching: RapidAPI JSearch finds matching jobs
  4. Deduplication: New jobs compared against notification history
  5. Notification: Email sent + real-time socket notification
  6. Logging: All notifications tracked for analytics

Real-time Community

  1. Socket Connection: User connects with authenticated token
  2. Channel Join: User subscribes to channel rooms
  3. Message Flow: Messages broadcast to channel members
  4. Presence: Online/offline status tracked
  5. DMs: Private conversations via personal rooms

Fellowship Payment Flow

  1. Challenge Creation: Corporate creates challenge with requirements and price
  2. Student Application: Students submit proposals with cover letter and pricing
  3. Proposal Review: Corporate reviews and selects proposal
  4. Payment: On acceptance, Razorpay checkout opens for escrow payment
  5. Chat Room: After payment, chat room created with "In Escrow" status
  6. Collaboration: Student and corporate discuss and work on challenge
  7. Completion: Corporate releases funds when satisfied
  8. Challenge Closed: Challenge marked complete, chat archived

AI Interview Pipeline

  1. Configuration: User selects role, difficulty, and interview type
  2. Question Generation: Gemini AI generates role-specific questions
  3. Response Capture: User answers questions in real-time
  4. AI Evaluation: Each answer scored with detailed feedback
  5. Final Report: Comprehensive performance analysis and suggestions

🚒 Deployment

Frontend Deployment (Vercel/Netlify)

# Build for production
cd frontend
npm run build

# Preview build locally
npm run preview

Environment Variables to Set:

  • All VITE_* variables from frontend .env

Backend Deployment (Railway/Render/Heroku)

# Production start
cd backend
npm start

Environment Variables to Set:

  • All variables from backend .env
  • Ensure NODE_ENV=production

Firebase Setup

  1. Create Firebase project
  2. Enable Authentication (Email/Password + Google)
  3. Create Firestore database
  4. Set up Storage bucket
  5. Download service account JSON
  6. Configure security rules

Database Setup

MongoDB Atlas:

  1. Create cluster
  2. Add database user
  3. Whitelist IP addresses
  4. Get connection string

Redis (Upstash/Redis Cloud):

  1. Create Redis instance
  2. Get connection credentials
  3. Configure BullMQ

πŸ“– Documentation

Document Description
Architecture System architecture, data flows, database schemas
API Reference Complete API documentation
Real-World Use Cases Success stories and applications
Contributing Guide How to contribute to the project

🌍 Real-World Use Cases

See Real_life_usecase.md for detailed success stories including:

  • Fresh Graduates: First job seekers optimizing resumes for entry-level positions
  • Career Changers: Professionals transitioning to new industries
  • Job Seeker Networks: Building communities for mutual support
  • Recruitment Agencies: Bulk resume processing and matching
  • University Career Centers: Student resume workshops and tracking

πŸ› οΈ Troubleshooting Guide

If you encounter issues while setting up or running the project locally, try the following common fixes before creating a new issue.

MongoDB Connection Error:

Problem

MongoServerSelectionError

Solution

  • Verify your MONGODB_URI in backend .env
  • Ensure MongoDB service is running
  • Check internet connection if using MongoDB Atlas
  • Restart backend server after updating environment variables

Redis Connection Error:

Problem

ECONNREFUSED 127.0.0.1:6379

Solution

  • Ensure Redis server is installed and running
  • Verify REDIS_HOST and REDIS_PORT
  • Restart Redis service
  • Check firewall restrictions

Firebase Admin Initialization Error:

Problem

FirebaseAppError

Solution

  • Verify Firebase credentials in .env
  • Ensure service account JSON is valid
  • Check FIREBASE_PROJECT_ID
  • Restart backend server after changes

Port Already in Use:

Problem

EADDRINUSE

Solution

  • Change the PORT value in .env
  • Stop other applications using the same port
  • Restart your terminal and development server

npm Install Errors:

Problem

Dependencies fail during installation.

Solution

Run:

npm install

If the issue persists:

npm cache clean --force

Then reinstall dependencies:

npm install

Frontend Not Starting:

Problem

Frontend server does not run properly.

Solution

  • Ensure frontend .env exists
  • Verify all VITE_* variables are correct
  • Run:
npm run dev

inside the frontend directory.

Backend Not Starting:

Problem

Backend crashes during startup.

Solution

  • Ensure backend .env is configured
  • Verify MongoDB and Redis are running
  • Run:
npm run dev

inside the backend directory.

Environment Variables Tips:

  • Never commit .env files
  • Double-check all API keys
  • Restart servers after changing environment variables
  • Ensure no extra spaces are added in .env

🀝 Contributing

We welcome contributions! Please see our CONTRIBUTION.md for:

  • Code of Conduct
  • Development Setup
  • Pull Request Process
  • Coding Standards
  • Issue Guidelines

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.



πŸ‘₯ Contributors

This project exists thanks to all the people who contribute. Become a contributor!


πŸ™ Acknowledgments

  • Google Gemini AI for resume enhancement capabilities
  • Firebase for authentication and real-time database
  • JSearch API for job listings
  • The open-source community for amazing tools

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 97.2%
  • CSS 1.9%
  • HTML 0.9%