Skip to content

AI-powered job matching platform with Django + React, skill-based recommendations, job scraping, and application tracking.

Notifications You must be signed in to change notification settings

priyamkapadiya07/SmartJobMatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

18 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SmartJobMatch - AI-Powered Job Matching Platform

SmartJobMatch is a full-stack web application that helps users find their perfect job match using AI-powered recommendations based on their skills and experience. The platform scrapes job listings, analyzes user profiles, and provides personalized job recommendations.

๐Ÿš€ Features

Backend (Django)

  • User Authentication: Secure signup/login with Django's built-in authentication
  • User Profiles: Complete profile management with skills, experience, education
  • File Upload: Resume and profile picture upload functionality
  • Job Scraping: Automatic job scraping from HTML files using BeautifulSoup
  • AI Recommendations: Skill-based job matching algorithm
  • REST API: Comprehensive API endpoints for all functionality
  • Dual Database: SQLite for user data, MongoDB for job data

Frontend (React)

  • Modern UI: Responsive design with Bootstrap and custom animations
  • Authentication Flow: Secure login/signup with session management
  • Job Search: Advanced filtering and search capabilities
  • Profile Management: Interactive profile editing with skill management
  • Application Tracking: Track and manage job applications
  • Responsive Design: Mobile-first design approach

๐Ÿ›  Tech Stack

Backend

  • Django 5.1.7 - Web framework
  • Django REST Framework - API development
  • SQLite - User authentication and profiles
  • MongoDB - Job listings and applications
  • BeautifulSoup4 - Web scraping
  • Pillow - Image processing
  • django-cors-headers - CORS handling

Frontend

  • React 19.1.1 - Frontend framework
  • React Router - Client-side routing
  • React Bootstrap - UI components
  • Axios - HTTP client
  • FontAwesome - Icons
  • Bootstrap 5.3.3 - CSS framework

๐Ÿ“‹ Prerequisites

Before running this application, make sure you have the following installed:

  • Python 3.8+
  • Node.js 16+
  • MongoDB (running on localhost:27017)
  • Git

๐Ÿ”ง Installation & Setup

1. Clone the Repository

git clone <repository-url>
cd SmartJobMatch

2. Backend Setup (Django)

# Navigate to Django project
cd jobmatch

# Create virtual environment
python -m venv venv

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

# Install dependencies
pip install -r requirements.txt

# Create environment file
cp .env.example .env
# Edit .env with your configurations

# Run migrations
python manage.py makemigrations
python manage.py migrate

# Create superuser (optional)
python manage.py createsuperuser

# username : group, password : 12345

# Start Django development server
python manage.py runserver

3. Frontend Setup (React)

# Navigate to React project (in a new terminal)
cd smartjobmatch

# Install dependencies
npm install

# Start React development server
npm start

4. MongoDB Setup

Make sure MongoDB is running on your system:

# Start MongoDB service
# On Windows (if installed as service):
net start MongoDB

# On macOS:
brew services start mongodb-community

# On Linux:
sudo systemctl start mongod

๐Ÿš€ Usage

1. Access the Application

2. First Time Setup

  1. Create an account using the signup page
  2. Complete your profile with skills and experience
  3. Upload your resume (optional)
  4. Browse recommended jobs based on your skills

3. Job Management

  1. Use the "Refresh Jobs" button to scrape new jobs from job_generate.html
  2. Browse all jobs or view personalized recommendations
  3. Apply for jobs and track your applications
  4. Manage applications from your profile page

๐Ÿ“ Project Structure

SmartJobMatch/
โ”œโ”€โ”€ jobmatch/                 # Django Backend
โ”‚   โ”œโ”€โ”€ jobmatch/            # Main Django project
โ”‚   โ”‚   โ”œโ”€โ”€ settings.py      # Django settings
โ”‚   โ”‚   โ”œโ”€โ”€ urls.py          # URL routing
โ”‚   โ”‚   โ””โ”€โ”€ wsgi.py          # WSGI config
โ”‚   โ”œโ”€โ”€ job/                 # Main Django app
โ”‚   โ”‚   โ”œโ”€โ”€ models.py        # Database models
โ”‚   โ”‚   โ”œโ”€โ”€ views.py         # API views
โ”‚   โ”‚   โ”œโ”€โ”€ urls.py          # App URLs
โ”‚   โ”‚   โ”œโ”€โ”€ admin.py         # Admin interface
โ”‚   โ”‚   โ”œโ”€โ”€ mongodb_utils.py # MongoDB operations
โ”‚   โ”‚   โ””โ”€โ”€ scraper.py       # Job scraping logic
โ”‚   โ”œโ”€โ”€ requirements.txt     # Python dependencies
โ”‚   โ”œโ”€โ”€ manage.py           # Django management
โ”‚   โ””โ”€โ”€ .env.example        # Environment template
โ”œโ”€โ”€ smartjobmatch/          # React Frontend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/     # Reusable components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Navbar.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Footer.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ JobCard.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ pages/          # Page components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoginPage.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SignupPage.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ HomePage.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProfilePage.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ JobSectionPage.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ JobDetailsPage.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ contexts/       # React contexts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ AuthContext.js
โ”‚   โ”‚   โ”œโ”€โ”€ services/       # API services
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ api.js
โ”‚   โ”‚   โ”œโ”€โ”€ App.js          # Main App component
โ”‚   โ”‚   โ”œโ”€โ”€ App.css         # Custom styles
โ”‚   โ”‚   โ””โ”€โ”€ index.js        # Entry point
โ”‚   โ”œโ”€โ”€ public/
โ”‚   โ”‚   โ””โ”€โ”€ index.html      # HTML template
โ”‚   โ”œโ”€โ”€ package.json        # Node dependencies
โ”‚   โ””โ”€โ”€ package-lock.json
โ”œโ”€โ”€ job_generate.html       # Job data source
โ””โ”€โ”€ README.md              # This file

๐Ÿ”Œ API Endpoints

Authentication

  • POST /api/signup/ - User registration
  • POST /api/login/ - User login
  • POST /api/logout/ - User logout
  • GET /api/user/ - Get current user info

Profile Management

  • GET /api/profile/ - Get user profile
  • PUT /api/profile/ - Update user profile
  • POST /api/profile/upload_resume/ - Upload resume
  • GET /api/profile/applied_jobs/ - Get applied jobs
  • DELETE /api/profile/applied_jobs/{job_id}/ - Remove application

Job Management

  • GET /api/jobs/ - Get all jobs
  • GET /api/jobs/recommended/ - Get recommended jobs
  • GET /api/jobs/{job_id}/ - Get job details
  • POST /api/jobs/{job_id}/apply/ - Apply for job
  • POST /api/jobs/scrape/ - Scrape new jobs

๐ŸŽจ Key Features Explained

1. AI-Powered Recommendations

The system analyzes user skills and matches them with job requirements:

  • Counts matching skills between user profile and job requirements
  • Sorts jobs by relevance (most matching skills first)
  • Highlights matching skills in the UI

2. Job Scraping

Automatically extracts job data from HTML files:

  • Parses job titles, companies, locations, descriptions
  • Extracts required skills and salary information
  • Prevents duplicate job entries

3. Application Tracking

Complete application management:

  • Track all job applications
  • Prevent duplicate applications
  • Remove applications when needed

4. Responsive Design

Mobile-first approach with:

  • Bootstrap components
  • Custom CSS animations
  • Responsive layouts for all screen sizes

๐Ÿ”’ Security Features

  • CSRF protection
  • CORS configuration for frontend-backend communication
  • File upload validation (resume uploads)
  • Session-based authentication
  • Input validation and sanitization

๐Ÿ› Troubleshooting

Common Issues

  1. MongoDB Connection Error

    • Ensure MongoDB is running on localhost:27017
    • Check MongoDB service status
  2. CORS Errors

    • Verify CORS settings in Django settings.py
    • Ensure frontend is running on localhost:3000
  3. File Upload Issues

    • Check MEDIA_ROOT and MEDIA_URL settings
    • Ensure proper file permissions
  4. Job Scraping Not Working

    • Verify job_generate.html exists in the root directory
    • Check HTML structure matches scraper expectations

Development Tips

  1. Database Reset

    # Reset SQLite database
    rm db.sqlite3
    python manage.py migrate
    
    # Clear MongoDB collections
    mongo smartjobmatch --eval "db.jobs.drop(); db.applied_jobs.drop();"
  2. Debug Mode

    • Set DEBUG=True in Django settings for development
    • Use browser developer tools for frontend debugging

๐Ÿค Contributing

  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 licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘ฅ Team

  • Backend Development: Django REST API, MongoDB integration, job scraping
  • Frontend Development: React components, UI/UX design, authentication flow
  • Full-Stack Integration: API connectivity, state management, deployment

๐Ÿ”ฎ Future Enhancements

  • Email notifications for new job matches
  • Advanced search filters (salary range, experience level)
  • Company profiles and ratings
  • Interview scheduling integration
  • Resume parsing and skill extraction
  • Social login (Google, LinkedIn)
  • Mobile app development
  • Machine learning for better job matching

SmartJobMatch - Connecting talent with opportunity through intelligent job matching! ๐Ÿš€

About

AI-powered job matching platform with Django + React, skill-based recommendations, job scraping, and application tracking.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published