A comprehensive job portal application built with MongoDB, Express.js, React.js, and Node.js. This platform allows recruiters to post job listings and manage applications, while applicants can browse jobs, apply, and track their applications.
- User Registration & Authentication: Secure registration for both Applicants and Recruiters
- Role-based Access: Different interfaces and permissions for Applicants and Recruiters
- Profile Management: Users can update their profiles, education, skills, and contact information
- JWT Authentication: Secure token-based authentication system
- Job Listing Management:
- Create new job listings with details (title, requirements, salary, duration, etc.)
- Edit existing job listings (max applicants, max positions, deadline)
- Delete job listings
- View all posted jobs
- Application Management:
- View all applications for each job listing
- Accept or reject applications
- Automatic email notifications to accepted candidates
- Track number of accepted candidates
- Employee Management:
- View all employees/accepted candidates
- Rate employees
- Manage employee information
- Job Search & Application:
- Browse all available job listings
- Apply for jobs with Statement of Purpose (SOP)
- Track application status (Applied, Accepted, Rejected)
- View application history
- Profile Features:
- Update personal information and skills
- Add education details
- Rate completed jobs
- Input Validation: Comprehensive form validation for all user inputs
- Email Notifications: Automated email system for job acceptance notifications
- Rating System: Two-way rating system for jobs and employees
- Responsive Design: Material-UI components for modern, responsive interface
- Real-time Updates: Dynamic status updates for applications
- Search & Filter: Job filtering and sorting capabilities
- Security: Password hashing with bcrypt, JWT tokens, and protected routes
Frontend:
- React.js
- Material-UI (@material-ui/core, @material-ui/icons)
- React Router DOM
- Axios for API calls
- Bootstrap
- React Redux
- JWT Decode
Backend:
- Node.js
- Express.js
- MongoDB with Mongoose
- JWT for authentication
- Bcrypt.js for password hashing
- Nodemailer for email notifications
- Multer for file uploads
- CORS enabled
- Node.js (v12 or higher)
- MongoDB (local or cloud instance)
- Git
cd backend/
npm install
Create a config/keys.js
file with your configuration:
module.exports = {
mongoURI: "your_mongodb_connection_string",
secretOrKey: "your_jwt_secret_key",
orgmail: "[email protected]",
orgpass: "your_email_password"
};
Start the backend server:
npm start
Server runs on http://localhost:4000
cd frontend/
npm install
npm start
Frontend runs on http://localhost:3000
mern_job_portal/
├── backend/
│ ├── config/
│ │ └── keys.js # Database & email configuration
│ ├── middleware/
│ │ └── auth.js # JWT authentication middleware
│ ├── models/
│ │ ├── Users.js # User schema (Applicants & Recruiters)
│ │ └── Jobs.js # Job listings schema
│ ├── routes/
│ │ ├── Users.js # User-related API endpoints
│ │ ├── Jobs.js # Job-related API endpoints
│ │ └── testAPI.js # Test endpoint
│ ├── acceptance.js # Email template for job acceptance
│ ├── email.js # Email service configuration
│ ├── validation.js # Input validation functions
│ └── server.js # Main server file
├── frontend/
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ │ ├── Applicants/ # Applicant-related components
│ │ │ ├── Recruiters/ # Recruiter-related components
│ │ │ ├── Common/ # Shared components
│ │ │ └── templates/ # Navigation templates
│ │ ├── context/ # Authentication context
│ │ ├── util/ # Route protection utilities
│ │ └── App.js # Main app component
│ └── package.json
└── README.md
POST /register
- User registrationPOST /login
- User loginGET /me
- Get current user profilePOST /editUser/:id
- Update user profilePOST /addJob/:id
- Add job to user's applied jobsGET /getApp/:id
- Get applicant detailsPOST /getApps
- Get multiple applicants
GET /
- Get all job listingsPOST /register
- Create new job listingPOST /addApp/:id
- Add application to jobPOST /updateStatus/:id
- Update application statusPOST /editJob/:id
- Edit job detailsPOST /deleteJob/:id
- Delete job listingGET /getJob/:id
- Get specific job detailsGET /checkAccepted/:id
- Check if user is acceptedPOST /getJobs
- Get multiple jobs
- Registration: Choose between Applicant or Recruiter role
- For Recruiters:
- Create job listings from the dashboard
- Manage applications and accept/reject candidates
- View and rate employees
- For Applicants:
- Browse available job listings
- Apply with a Statement of Purpose
- Track application status
- Rate completed jobs
- Password hashing using bcrypt
- JWT token-based authentication
- Protected routes based on user roles
- Input validation and sanitization
- CORS enabled for cross-origin requests
Automated email notifications are sent to applicants when their job applications are accepted, using a professionally designed HTML email template.
- Responsive design with Material-UI components
- Role-based navigation menus
- Dynamic status updates
- Professional styling with Bootstrap
- User-friendly forms with validation feedback
Navigate to http://localhost:3000/ in your browser to access the application.