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.
- 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
- 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
- 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
- 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
Before running this application, make sure you have the following installed:
- Python 3.8+
- Node.js 16+
- MongoDB (running on localhost:27017)
- Git
git clone <repository-url>
cd SmartJobMatch
# 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
# Navigate to React project (in a new terminal)
cd smartjobmatch
# Install dependencies
npm install
# Start React development server
npm start
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
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Django Admin: http://localhost:8000/admin
- Create an account using the signup page
- Complete your profile with skills and experience
- Upload your resume (optional)
- Browse recommended jobs based on your skills
- Use the "Refresh Jobs" button to scrape new jobs from
job_generate.html
- Browse all jobs or view personalized recommendations
- Apply for jobs and track your applications
- Manage applications from your profile page
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
POST /api/signup/
- User registrationPOST /api/login/
- User loginPOST /api/logout/
- User logoutGET /api/user/
- Get current user info
GET /api/profile/
- Get user profilePUT /api/profile/
- Update user profilePOST /api/profile/upload_resume/
- Upload resumeGET /api/profile/applied_jobs/
- Get applied jobsDELETE /api/profile/applied_jobs/{job_id}/
- Remove application
GET /api/jobs/
- Get all jobsGET /api/jobs/recommended/
- Get recommended jobsGET /api/jobs/{job_id}/
- Get job detailsPOST /api/jobs/{job_id}/apply/
- Apply for jobPOST /api/jobs/scrape/
- Scrape new jobs
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
Automatically extracts job data from HTML files:
- Parses job titles, companies, locations, descriptions
- Extracts required skills and salary information
- Prevents duplicate job entries
Complete application management:
- Track all job applications
- Prevent duplicate applications
- Remove applications when needed
Mobile-first approach with:
- Bootstrap components
- Custom CSS animations
- Responsive layouts for all screen sizes
- CSRF protection
- CORS configuration for frontend-backend communication
- File upload validation (resume uploads)
- Session-based authentication
- Input validation and sanitization
-
MongoDB Connection Error
- Ensure MongoDB is running on localhost:27017
- Check MongoDB service status
-
CORS Errors
- Verify CORS settings in Django settings.py
- Ensure frontend is running on localhost:3000
-
File Upload Issues
- Check MEDIA_ROOT and MEDIA_URL settings
- Ensure proper file permissions
-
Job Scraping Not Working
- Verify job_generate.html exists in the root directory
- Check HTML structure matches scraper expectations
-
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();"
-
Debug Mode
- Set
DEBUG=True
in Django settings for development - Use browser developer tools for frontend debugging
- Set
- 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 licensed under the MIT License - see the LICENSE file for details.
- 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
- 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! ๐