A production-style backend API for a Job Board Platform built with Node.js, Express.js, and MongoDB. The platform supports authentication, role-based access control, job management, job applications, resume uploads, and admin management features.
- User registration and login
- JWT authentication
- Protected routes
- Role-based access control
- Admin
- Employer
- Candidate
- Employers can create job listings
- Get all jobs with:
- pagination
- filtering
- keyword search
- Get single job details
- Candidates can apply for jobs
- Prevent duplicate applications
- Employers can:
- view applications
- update application status
- Pending
- Reviewed
- Shortlisted
- Rejected
- Accepted
- Resume upload using Multer
- Local file storage
- Candidate resume management
- View all users
- View all jobs
- Application statistics
- User and job management
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT Authentication
- Multer
- bcryptjs
- dotenv
src/
βββ controllers/
βββ middlewares/
βββ models/
βββ routes/
βββ uploads/
βββ utils/
βββ config/
βββ server.jsgit clone <your-repository-url>cd job-board-platformnpm installCreate a .env file in the root directory:
PORT=8080
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_keynpm run devServer runs on:
http://localhost:8080POST /api/registerPOST /api/loginPOST /api/GET /api/GET /api/:idPOST /api/:id/applyGET /api/:id/applicationsPATCH /api/applications/:id/statusPOST /api/upload-resumeGET /api/usersGET /api/jobsGET /api/statsSupported query parameters:
GET /api/jobs?location=Lagos
GET /api/jobs?jobType=full-time
GET /api/jobs?category=backend
GET /api/jobs?search=node
GET /api/jobs?page=1&limit=10- Password hashing with bcryptjs
- JWT authentication
- Protected API routes
- Role-based authorization
- Duplicate application prevention
API testing was completed using:
- Postman
Tested features include:
- Authentication
- Protected routes
- Job CRUD operations
- Resume uploads
- Job applications
- Application status updates
- Admin endpoints
- Cloudinary/AWS S3 resume storage
- Email notifications
- Real-time messaging
- Advanced analytics dashboard
- Docker support
- CI/CD integration
Built by Yusuf Afolabi
This project is open-source and available for learning and development purposes.