Skip to content

πŸš€ JobHive is a dynamic MERN stack job portal with a stunning UI ✨. It features smart search & filter πŸ”, and tailored views for recruiters πŸ‘¨β€πŸ’Ό and students πŸŽ“β€”making job hunting and hiring smooth and intuitive! πŸ’ΌπŸ”—

Notifications You must be signed in to change notification settings

rahull0328/jobHive-Frontend

Repository files navigation

JobHive πŸš€

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.


Table of Contents πŸ“š


Features ✨

  • 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.

Tech Stack πŸ› οΈ

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

Project Structure πŸ“‚

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 for User, Job, and Application.
    • 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).

Setup & Installation βš™οΈ

Follow these steps to get JobHive running on your local machine.

Prerequisites πŸ“‹

  • Node.js (v14 or higher) & npm (v6+).
  • MongoDB (local or Atlas).
  • (Optional) Yarn (if you prefer Yarn over npm).

Environment Variables 🌐

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.

Backend πŸ–₯️

  1. Open a terminal and navigate to the backend/ folder:

    cd jobHive/backend
  2. Install dependencies:

    npm install
  3. Start the server in development mode:

    npm run dev
    • This assumes you have a script in package.json like:

      "scripts": {
        "dev": "nodemon server.js"
      }
  4. The server should now be running at http://localhost:5000 πŸš€.

Frontend 🌐

  1. Open a new terminal window/tab and navigate to the frontend/ folder:

    cd jobHive/frontend
  2. Install dependencies:

    npm install
  3. Start the React development server:

    npm start
  4. The client will run at http://localhost:3000 by default. It should proxy API requests to http://localhost:5000 (verify proxy settings in frontend/package.json) πŸ”„.


Usage 🎯

  1. Register πŸ”‘ as either a Student πŸŽ“ or Recruiter 🏒.

  2. 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.
  3. Use the Search & Filter πŸ” bar to quickly narrow down jobs by title, location, or category.

  4. Logout πŸšͺ when you’re done to clear your session.

Note: All API calls require a valid JWT in the Authorization header (Bearer <token>).


Contributing 🀝

  1. Fork this repository.

  2. Create a new branch for your feature or bugfix:

    git checkout -b feature/<your-feature-name>
  3. Make your changes and commit:

    git commit -m "Add <feature> or fix <issue>"
  4. Push to your fork:

    git push origin feature/<your-feature-name>
  5. Open a Pull Request against rahull0328/jobHive:main.

  6. 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.


Author πŸ™‹β€β™‚οΈ

Rahul Mehta

Feel free to reach out for any questions or feedback!

About

πŸš€ JobHive is a dynamic MERN stack job portal with a stunning UI ✨. It features smart search & filter πŸ”, and tailored views for recruiters πŸ‘¨β€πŸ’Ό and students πŸŽ“β€”making job hunting and hiring smooth and intuitive! πŸ’ΌπŸ”—

Resources

Stars

Watchers

Forks