JobHive is a dynamic MERNβstack job portal with a stunning UI β¨. It features smart search & filtering π, plus tailored views for recruiters π’ and students πβmaking job hunting and hiring smooth and intuitive.
- Smart Search & Filter π
Quickly find jobs by keyword, location, or category. - Dual User Roles π₯
- Students π can browse listings, apply for jobs, and manage their profile.
- Recruiters π’ can post new jobs, review applicants, and update listings.
- Responsive Design π±
Fully functional on desktop and mobile. - Authentication & Authorization π
- Secure login/signup for both roles.
- Access control ensures recruiters only see recruiterβspecific pages and students only see studentβspecific pages.
- Profile Management π€
- Students can upload resumes π, update details, and track applications.
- Recruiters can manage company profiles π and posted jobs.
| Layer | Technology |
|---|---|
| Client π₯οΈ | React.js, Redux (or Context API), React Router, Axios |
| Server ποΈ | Node.js, Express.js |
| Database ποΈ | MongoDB (Mongoose ORM) |
| Auth π‘οΈ | JSON Web Tokens (JWT) |
| Styling π¨ | Tailwind CSS |
| Misc π§° | Dotenv for environment variables, bcrypt for password hashing |
jobHive/
βββ backend/ # Express server, API endpoints
β βββ controllers/ # Route handlers (e.g., auth, jobs, users)
β βββ models/ # Mongoose schemas (User, Job, Application)
β βββ routes/ # Express routes (authRoutes.js, jobRoutes.js, etc.)
β βββ middleware/ # Auth middleware (verifyToken, roleCheck)
β βββ config/ # DB connection (db.js), constants
β βββ utils/ # Helper functions (e.g., email sender)
β βββ .env.example # Sample environment variables
β βββ server.js # Entry point for the backend
β βββ package.json # Backend dependencies and scripts
β
βββ frontend/ # React client application
β βββ public/ # Static assets (index.html, favicon)
β βββ src/
β β βββ components/ # Reusable UI components (Navbar, JobCard, etc.)
β β βββ pages/ # Page-level components (Home, Dashboard, Profile)
β β βββ redux/ # (Optional) Redux slices, store configuration
β β βββ services/ # API service functions (authService, jobService)
β β βββ utils/ # Utilities (e.g., auth helper, form validators)
β β βββ App.jsx # Main React component with routes
β β βββ index.jsx # React entry point
β β βββ tailwind.config.js # Tailwind configuration (if using Tailwind)
β βββ package.json # Frontend dependencies and scripts
β
βββ README.md # This file
βββ .gitignore # Files to ignore in Git
-
backend/ ποΈ Contains all serverβside code. Key folders:
controllers/: Defines logic for each route (creating jobs, registering users, etc.).models/: Mongoose schemas forUser,Job, andApplication.routes/: API endpoint definitions, grouped by feature (auth, jobs, users).middleware/: JWT verification and roleβbased access control.config/: Database connection setup (e.g., connecting to MongoDB).
-
frontend/ π₯οΈ Contains all clientβside React code. Key folders:
components/: Presentational components reused across multiple pages.pages/: Routeβspecific components (e.g.,Home.jsx,JobDetails.jsx,Dashboard.jsx).redux/(if applicable): State management logic.utils/: Generic helpers (e.g., token utilities, form validation).
Follow these steps to get JobHive running on your local machine.
- Node.js (v14 or higher) & npm (v6+).
- MongoDB (local or Atlas).
- (Optional) Yarn (if you prefer Yarn over npm).
Create a .env file in the backend/ directory with the following (example) variables:
PORT=5000
MONGO_URI=<your_mongo_connection_string>
JWT_SECRET=<your_jwt_secret>
CLIENT_URL=http://localhost:3000
* `PORT`: Port for backend server (default: 5000).
* `MONGO_URI`: MongoDB connection string.
* `JWT_SECRET`: Secret key for signing JWTs.
* `CLIENT_URL`: URL of the React frontend (used in CORS settings).
Copy `backend/.env.example` to `backend/.env` and fill in your own values.-
Open a terminal and navigate to the
backend/folder:cd jobHive/backend -
Install dependencies:
npm install
-
Start the server in development mode:
npm run dev
-
This assumes you have a script in
package.jsonlike:"scripts": { "dev": "nodemon server.js" }
-
-
The server should now be running at
http://localhost:5000π.
-
Open a new terminal window/tab and navigate to the
frontend/folder:cd jobHive/frontend -
Install dependencies:
npm install
-
Start the React development server:
npm start
-
The client will run at
http://localhost:3000by default. It should proxy API requests tohttp://localhost:5000(verify proxy settings infrontend/package.json) π.
-
Register π as either a Student π or Recruiter π’.
-
Log in π to access roleβspecific dashboards:
- Students π can browse job listings, apply to positions, and update their profiles/resumes.
- Recruiters π’ can post new job openings, review applications, and manage company details.
-
Use the Search & Filter π bar to quickly narrow down jobs by title, location, or category.
-
Logout πͺ when youβre done to clear your session.
Note: All API calls require a valid JWT in the
Authorizationheader (Bearer <token>).
-
Fork this repository.
-
Create a new branch for your feature or bugfix:
git checkout -b feature/<your-feature-name>
-
Make your changes and commit:
git commit -m "Add <feature> or fix <issue>" -
Push to your fork:
git push origin feature/<your-feature-name>
-
Open a Pull Request against
rahull0328/jobHive:main. -
Ensure your PR description clearly outlines what youβve added or fixed.
Please follow best practices for commit messages and code style. Run any existing linters/tests before submitting.
Rahul Mehta
- GitHub: rahull0328
Feel free to reach out for any questions or feedback!