NextHire is a comprehensive job portal application that connects job seekers with employers. The platform allows recruiters to post job opportunities and manage applications, while job seekers can search for positions, apply to jobs, and receive personalized recommendations based on their profile.
- Framework: React 19 with Vite
- State Management: Redux Toolkit with Redux Persist
- Routing: React Router v7
- UI Components: Radix UI, Tailwind CSS
- HTTP Client: Axios
- Authentication: Firebase
- Notifications: React Toastify, Sonner
- Animation: Framer Motion
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Authentication: JWT, bcryptjs
- File Upload: Cloudinary, express-fileupload
- Email Service: Nodemailer
- Documentation: Swagger
- AI Integration: OpenAI, Google Generative AI
- User Authentication: Secure registration and login for both recruiters and job seekers
- Job Management: Post, search, filter, and apply for jobs
- Company Profiles: Create and manage company information
- Application Tracking: Monitor application status and updates
- Email Notifications: Receive alerts for job matches, application status changes
- Advanced Filtering: Filter jobs by salary, job type, and location
- AI-Powered Recommendations: Personalized job suggestions based on user profiles
- Document Parsing: Extract key information from user documents
- Responsive Design: Optimized for all device sizes
server/
├─ src/
├─ config/
│ └─ db.js
├─ models/
│ ├─ application.model.js
│ ├─ company.model.js
│ ├─ job.model.js
│ └─ user.model.js
├─ controllers/
│ ├─ application.controller.js
│ ├─ company.controller.js
│ ├─ job.controller.js
│ └─ user.controller.js
├─ routes/
│ ├─ application.route.js
│ ├─ company.route.js
│ ├─ job.route.js
│ └─ user.route.js
├─ services/
│ └─ openai.services.js
├─ utils/
│ ├─ errorHandler.js
│ ├─ sendEmail.route.js
│ └─ sendToken.route.js
├─ app.js
└─ server.js
client/
├─ public/
│ ├─ NexthireLogo.png
│ └─ other assets
├─ src/
├─ components/
│ ├─ admin/
│ ├─ auth/
│ │ ├─ Login.jsx
│ │ └─ Register.jsx
│ ├─ shared/
│ │ ├─ Navbar.jsx
│ │ ├─ Footer.jsx
│ │ └─ Loader.jsx
│ └─ ui/
│ └─ Modal.jsx
├─ lib/
├─ redux/
│ ├─ store.js
│ └─ slices/
│ ├─ authSlice.js
│ └─ jobSlice.js
├─ services/
│ ├─ api.js
│ └─ jobService.js
└─ utils/
├─ constants.js
└─ helpers.js
├─ App.jsx
└─ main.jsx
- Node.js (v16 or higher)
- MongoDB account
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/Next_Hire_Job_Portal.git
# Navigate to server directory
cd Next_Hire_Job_Portal/server
# Install dependencies
npm install
# Create .env file with the following variables
PORT=5000
MONGO_URI=mongodb+srv://YOUR_USERNAME:YOUR_PASSWORD@cluster0.vvtoxbl.mongodb.net/JobPortal?retryWrites=true&w=majority
JWT_SECRET=your_jwt_secret
JWT_EXPIRE=7d
COOKIE_EXPIRE=7
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SERVICE=gmail
SMTP_MAIL=your_email@gmail.com
SMTP_PASSWORD=your_app_password
OPENAI_API_KEY=your_openai_api_key
# Start the server
npm start# Navigate to client directory
cd Next_Hire_Job_Portal/client
# Install dependencies
npm install
# Create .env file with the following variables
VITE_API_URL=http://localhost:5000/api/v1
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
# Start the development server
npm run devPOST /api/v1/user/register: Register a new userPOST /api/v1/user/login: Login a userGET /api/v1/user/logout: Logout a userPUT /api/v1/user/profile/update: Update user profileGET /api/v1/user/search-history: Get user's search historyDELETE /api/v1/user/search-history/clear: Clear user's search historyGET /api/v1/user/recommended-jobs: Get recommended jobs for the userGET /api/v1/user/search: Get search results based on queryPOST /api/v1/user/verify-email: Verify user emailPOST /api/v1/user/read-content: Extract key information from a user's documents
POST /api/v1/job/post: Post a new jobGET /api/v1/job/get: Get all jobsGET /api/v1/job/getadminjobs: Get admin jobsGET /api/v1/job/get/:id: Get job by IDDELETE /api/v1/job/delete/:id: Delete a jobGET /api/v1/job/:id/similar: Get similar jobs
POST /api/v1/company/register: Register a new companyGET /api/v1/company/get: Get all companiesGET /api/v1/company/get/:id: Get company by IDGET /api/v1/company/getJob/:id: Get jobs by company IDPUT /api/v1/company/update/:id: Update company information
POST /api/v1/application/apply/:jobId: Apply for a job by job IDGET /api/v1/application/get: Get all applied jobsGET /api/v1/application/:jobId/applicants: Get applicants for a specific job by job IDPOST /api/v1/application/status/:applicationId/update: Update the status of a job application by application ID
- Modern React with functional components and hooks
- Redux for centralized state management
- Responsive design with Tailwind CSS
- Component-based architecture for reusability
- Client-side form validation
- RESTful API architecture
- JWT for secure authentication
- MongoDB for flexible document storage
- MVC pattern for code organization
- AI integration for enhanced user experience
- Real-time notifications using WebSockets
- Advanced analytics dashboard for recruiters
- Resume builder for job seekers
- Interview scheduling system
- Mobile application
NEXT_HIRE_JOB_PORTAL
client .env server .env .env










