A full-stack MERN (MongoDB, Express, React, Node.js) job board application designed for job seekers and employers across Africa.
- Browse jobs without creating an account
- Search and filter jobs by category, location, and keywords
- View detailed job descriptions
- No registration required for browsing
- 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
- Access admin panel with statistics
- Manage job categories (add, edit, delete)
- View all jobs in the system
- Activate/deactivate jobs
- Delete any job posting
- Frontend: React 18, React Router, Axios
- Backend: Node.js, Express.js
- Database: MongoDB with Mongoose
- Authentication: JWT (JSON Web Tokens)
- Password Security: bcryptjs
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
- Node.js (v14 or higher)
- MongoDB (local installation or MongoDB Atlas)
- npm or yarn
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Create a
.envfile 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- Start MongoDB (if running locally):
# On Windows
net start MongoDB
# On macOS/Linux
sudo systemctl start mongod- Seed the database with categories:
node seedCategories.js- Start the backend server:
npm run devThe backend server will run on http://localhost:5000
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create a
.envfile in the frontend directory (optional):
REACT_APP_API_URL=http://localhost:5000/api- Start the development server:
npm startThe frontend will run on http://localhost:3000
To create an admin account, you'll need to manually update the user role in MongoDB:
- Register a regular account through the website
- Connect to MongoDB and update the user:
db.users.updateOne(
{ email: "your-email@example.com" },
{ $set: { role: "admin" } }
)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.
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user (protected)
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)
GET /api/categories- Get all active categories (public)
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)
- 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
- Text search across job titles, descriptions, and companies
- Filter by category
- Filter by location
- Pagination support
- View all posted jobs
- See job statistics (views, status)
- Quick access to edit/delete jobs
- Post new jobs
- Dashboard with key statistics
- Category management (CRUD operations)
- Job management (view, activate/deactivate, delete)
- User management capabilities
- Password hashing with bcryptjs
- JWT-based authentication
- Protected routes (authentication middleware)
- Role-based access control (admin vs. user)
- Input validation using express-validator
Potential features to add:
- Email notifications
- Job application tracking
- Resume upload
- Saved jobs/bookmarks
- Advanced search filters
- Job alerts
- Company profiles
- Analytics dashboard
This project is open source and available for educational purposes.
Contributions are welcome! Please feel free to submit a Pull Request.