Skip to content

tikavalery/Biggiz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Biggiz - African Job Board

A full-stack MERN (MongoDB, Express, React, Node.js) job board application designed for job seekers and employers across Africa.

Features

For Job Seekers

  • Browse jobs without creating an account
  • Search and filter jobs by category, location, and keywords
  • View detailed job descriptions
  • No registration required for browsing

For Job Posters

  • Create an account to post jobs
  • Post detailed job listings with:
    • Job title, description, and requirements
    • Company information
    • Salary details
    • Contact information
    • Application URLs
  • View all posted jobs in personal dashboard
  • Edit and delete own job postings
  • Track job views

For Administrators

  • Access admin panel with statistics
  • Manage job categories (add, edit, delete)
  • View all jobs in the system
  • Activate/deactivate jobs
  • Delete any job posting

Technology Stack

  • Frontend: React 18, React Router, Axios
  • Backend: Node.js, Express.js
  • Database: MongoDB with Mongoose
  • Authentication: JWT (JSON Web Tokens)
  • Password Security: bcryptjs

Project Structure

biggiz/
├── backend/
│   ├── models/
│   │   ├── User.js
│   │   ├── Job.js
│   │   └── Category.js
│   ├── routes/
│   │   ├── auth.js
│   │   ├── jobs.js
│   │   ├── categories.js
│   │   └── admin.js
│   ├── middleware/
│   │   └── auth.js
│   ├── server.js
│   ├── seedCategories.js
│   └── package.json
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   ├── pages/
│   │   ├── context/
│   │   └── App.js
│   └── package.json
└── README.md

Installation & Setup

Prerequisites

  • Node.js (v14 or higher)
  • MongoDB (local installation or MongoDB Atlas)
  • npm or yarn

Backend Setup

  1. Navigate to the backend directory:
cd backend
  1. Install dependencies:
npm install
  1. Create a .env file in the backend directory:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/biggiz
JWT_SECRET=your_jwt_secret_key_here_change_in_production
NODE_ENV=development
  1. Start MongoDB (if running locally):
# On Windows
net start MongoDB

# On macOS/Linux
sudo systemctl start mongod
  1. Seed the database with categories:
node seedCategories.js
  1. Start the backend server:
npm run dev

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

Frontend Setup

  1. Navigate to the frontend directory:
cd frontend
  1. Install dependencies:
npm install
  1. Create a .env file in the frontend directory (optional):
REACT_APP_API_URL=http://localhost:5000/api
  1. Start the development server:
npm start

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

Usage

Creating an Admin Account

To create an admin account, you'll need to manually update the user role in MongoDB:

  1. Register a regular account through the website
  2. Connect to MongoDB and update the user:
db.users.updateOne(
  { email: "your-email@example.com" },
  { $set: { role: "admin" } }
)

Job Categories

The application comes pre-seeded with 100+ job categories including:

  • Accounting and Finance
  • Information Technology
  • Healthcare
  • Engineering
  • Marketing
  • Education
  • And many more...

Categories can be managed through the admin panel.

API Endpoints

Authentication

  • POST /api/auth/register - Register a new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user (protected)

Jobs

  • GET /api/jobs - Get all jobs (public, supports pagination and filters)
  • GET /api/jobs/:id - Get single job (public)
  • POST /api/jobs - Create a job (protected)
  • GET /api/jobs/user/my-jobs - Get user's jobs (protected)
  • PUT /api/jobs/:id - Update job (protected, owner only)
  • DELETE /api/jobs/:id - Delete job (protected, owner only)

Categories

  • GET /api/categories - Get all active categories (public)

Admin

  • GET /api/admin/stats - Get dashboard statistics (admin only)
  • GET /api/admin/categories - Get all categories (admin only)
  • POST /api/admin/categories - Create category (admin only)
  • PUT /api/admin/categories/:id - Update category (admin only)
  • DELETE /api/admin/categories/:id - Delete category (admin only)
  • GET /api/admin/jobs - Get all jobs (admin only)
  • PUT /api/admin/jobs/:id/status - Toggle job status (admin only)
  • DELETE /api/admin/jobs/:id - Delete job (admin only)

Features in Detail

Job Posting

  • Rich job descriptions
  • Multiple employment types (Full-time, Part-time, Contract, etc.)
  • Salary ranges with currency options
  • Requirements and responsibilities lists
  • Contact information
  • Application URLs

Search & Filter

  • Text search across job titles, descriptions, and companies
  • Filter by category
  • Filter by location
  • Pagination support

User Dashboard

  • View all posted jobs
  • See job statistics (views, status)
  • Quick access to edit/delete jobs
  • Post new jobs

Admin Panel

  • Dashboard with key statistics
  • Category management (CRUD operations)
  • Job management (view, activate/deactivate, delete)
  • User management capabilities

Security Features

  • Password hashing with bcryptjs
  • JWT-based authentication
  • Protected routes (authentication middleware)
  • Role-based access control (admin vs. user)
  • Input validation using express-validator

Future Enhancements

Potential features to add:

  • Email notifications
  • Job application tracking
  • Resume upload
  • Saved jobs/bookmarks
  • Advanced search filters
  • Job alerts
  • Company profiles
  • Analytics dashboard

License

This project is open source and available for educational purposes.

Contributing

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors