Skip to content

aditya-tripathee/JobHunt---JobPortal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JobHunt - Job Portal

A MERN stack job portal connecting job seekers with employers through job browsing, applications, and postings.

οΏ½ About

JobHunt is a comprehensive job portal platform that streamlines the hiring process. It serves as a bridge between talented job seekers and companies looking to hire. The platform enables:

  • Job Seekers to discover opportunities, build profiles, and manage job applications
  • Companies to post job openings, track applicants, and manage the hiring workflow
  • Admins to oversee platform operations and manage all stakeholders

Built with modern web technologies, JobHunt provides a seamless user experience with real-time updates, file uploads for resumes and company logos, and a responsive design that works across all devices.

οΏ½πŸ“‹ Table of Contents

✨ Features

User Features

  • User Authentication: Secure sign up and login with JWT authentication
  • Profile Management: Update user profile with profile picture, bio, and resume
  • Job Browsing: Browse and filter jobs by category, location, and experience level
  • Job Search: Search for jobs using keywords
  • Job Applications: Apply for jobs and track application status
  • Application History: View all applied jobs and their current status

Company Features

  • Company Registration: Create and manage company accounts
  • Job Posting: Post new job openings with detailed descriptions
  • Application Management: View and manage all job applications
  • Applicant Tracking: Track applicants and update application status

Admin Features

  • Company Management: Manage all companies on the platform
  • Job Oversight: Monitor job postings and applications

πŸ›  Tech Stack

Backend

  • Node.js - JavaScript runtime
  • Express.js - Web framework
  • MongoDB - NoSQL database
  • Mongoose - MongoDB object modeling
  • JWT - JSON Web Tokens for authentication
  • Bcryptjs - Password hashing
  • Cloudinary - Image hosting and management
  • Multer - File upload middleware
  • CORS - Cross-origin resource sharing
  • Nodemon - Development server auto-reload

Frontend

  • React 19 - UI library
  • Vite - Build tool and development server
  • Redux Toolkit - State management
  • React Router - Client-side routing
  • Tailwind CSS - Utility-first CSS framework
  • Shadcn/UI - Component library
  • Axios - HTTP client
  • React Icons - Icon library
  • Sonner - Toast notifications

πŸ“ Project Structure

JobHunt---JobPortal/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ cloudinary.js      # Cloudinary configuration
β”‚   β”‚   β”œβ”€β”€ dataUri.js         # Data URI utility for image handling
β”‚   β”‚   └── db.js              # MongoDB connection
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ authController.js        # Authentication logic
β”‚   β”‚   β”œβ”€β”€ userControllers.js       # User operations
β”‚   β”‚   β”œβ”€β”€ companyController.js     # Company operations
β”‚   β”‚   β”œβ”€β”€ jobControllers.js        # Job operations
β”‚   β”‚   └── applicationControllers.js # Application handling
β”‚   β”œβ”€β”€ middlewares/
β”‚   β”‚   β”œβ”€β”€ isAuth.middleware.js     # JWT verification
β”‚   β”‚   └── multer.js                # File upload setup
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ userModels.js        # User schema
β”‚   β”‚   β”œβ”€β”€ companyModels.js     # Company schema
β”‚   β”‚   β”œβ”€β”€ jobModels.js         # Job schema
β”‚   β”‚   └── applicationModels.js # Application schema
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ authRoutes.js           # Auth endpoints
β”‚   β”‚   β”œβ”€β”€ companyRoutes.js        # Company endpoints
β”‚   β”‚   β”œβ”€β”€ jobRoutes.js            # Job endpoints
β”‚   β”‚   └── applicationRoutes.js    # Application endpoints
β”‚   β”œβ”€β”€ index.js        # Server entry point
β”‚   └── package.json    # Backend dependencies
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ public/         # Static assets
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Admin/              # Admin components
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/               # Authentication components
β”‚   β”‚   β”‚   β”œβ”€β”€ shared/             # Shared components (Navbar, etc.)
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/                 # UI components (buttons, dialogs, etc.)
β”‚   β”‚   β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx            # Home page
β”‚   β”‚   β”‚   β”œβ”€β”€ Browse.jsx          # Job browsing page
β”‚   β”‚   β”‚   β”œβ”€β”€ Jobs.jsx            # Jobs listing
β”‚   β”‚   β”‚   β”œβ”€β”€ JobDetails.jsx      # Job details page
β”‚   β”‚   β”‚   β”œβ”€β”€ AppliedJobs.jsx     # User's applied jobs
β”‚   β”‚   β”‚   β”œβ”€β”€ Profile.jsx         # User profile
β”‚   β”‚   β”‚   └── Footer.jsx          # Footer component
β”‚   β”‚   β”œβ”€β”€ redux/
β”‚   β”‚   β”‚   β”œβ”€β”€ authSlice.js        # Auth state management
β”‚   β”‚   β”‚   β”œβ”€β”€ companySlice.js     # Company state management
β”‚   β”‚   β”‚   β”œβ”€β”€ jobSlice.js         # Job state management
β”‚   β”‚   β”‚   └── store.js            # Redux store configuration
β”‚   β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”‚   └── utils.js            # Utility functions
β”‚   β”‚   β”œβ”€β”€ utilis/
β”‚   β”‚   β”‚   └── constants.js        # Application constants
β”‚   β”‚   β”œβ”€β”€ App.jsx                 # Main App component
β”‚   β”‚   β”œβ”€β”€ main.jsx                # React entry point
β”‚   β”‚   β”œβ”€β”€ index.css               # Global styles
β”‚   β”‚   └── App.css                 # App styles
β”‚   β”œβ”€β”€ vite.config.js      # Vite configuration
β”‚   β”œβ”€β”€ eslint.config.js    # ESLint configuration
β”‚   β”œβ”€β”€ components.json     # Shadcn component configuration
β”‚   β”œβ”€β”€ package.json        # Frontend dependencies
β”‚   └── index.html          # HTML template
β”‚
└── README.md (this file)

πŸ› οΈ Backend Setup

Prerequisites

  • Node.js (v14 or higher)
  • MongoDB Atlas account or local MongoDB
  • Cloudinary account (for image uploads)

Installation

  1. Navigate to the backend directory:
cd backend
  1. Install dependencies:
npm install
  1. Create a .env file in the backend directory:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
CLOUDINARY_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
PORT=8000
  1. Start the backend development server:
npm run dev

The backend server will run on http://localhost:8000

πŸš€ Frontend Setup

Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn

Installation

  1. Navigate to the frontend directory:
cd frontend
  1. Install dependencies:
npm install
  1. The frontend is configured to connect to http://localhost:8000 for API calls.

  2. Start the frontend development server:

npm run dev

The frontend will run on http://localhost:5173

Build for Production

npm run build

This creates an optimized production build in the dist folder.

🎯 Running the Application

Start Both Backend and Frontend

You'll need two terminal windows:

Terminal 1 - Backend:

cd backend
npm run dev

Terminal 2 - Frontend:

cd frontend
npm run dev

Then open your browser and navigate to http://localhost:5173

πŸ“‘ API Endpoints

Authentication Routes (/api/v1/user)

  • POST /register - Register a new user
  • POST /login - User login
  • GET /logout - User logout
  • GET /profile - Get user profile (requires authentication)
  • PUT /profile/update - Update user profile (requires authentication)

Job Routes (/api/v1/jobs)

  • GET / - Get all jobs
  • GET /:id - Get job by ID
  • POST /create - Create a new job (requires authentication)
  • PUT /:id - Update a job (requires authentication)
  • DELETE /:id - Delete a job (requires authentication)

Company Routes (/api/v1/company)

  • POST /register - Register a new company
  • GET / - Get all companies
  • GET /:id - Get company by ID (requires authentication)
  • PUT /:id - Update company (requires authentication)

Application Routes (/api/v1/applications)

  • POST /apply - Apply for a job (requires authentication)
  • GET / - Get all applications (requires authentication)
  • GET /:id - Get application by ID (requires authentication)
  • PUT /:id/status - Update application status (requires authentication)

πŸ‘₯ User Types

Job Seeker

  • Can browse and search for jobs
  • Can apply for jobs
  • Can manage their profile
  • Can view application history

Company

  • Can post job openings
  • Can manage job postings
  • Can view and manage applications
  • Can update company profile

Admin

  • Can manage all companies
  • Can oversee all job postings
  • Can manage users and applications

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

✍️ Author

Aditya Tripathi


Happy Job Hunting! πŸš€

About

A responsive and modern application for a Job Portal where users can browse jobs, view details, apply, and manage their profiles. Works seamlessly with the Job Portal backend API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors