A modern job board platform built with React and Node.js that allows companies to post job opportunities and candidates to apply for positions.
- Job Posting: Companies can create and manage job listings
- Job Applications: Candidates can apply for jobs with detailed forms
- User Authentication: Secure authentication using Clerk
- Dashboard: Company dashboard for managing jobs and applications
- Rich Text Editor: Job descriptions with Quill editor
- File Upload: Support for resume and document uploads via Cloudinary
- Responsive Design: Modern UI built with Tailwind CSS
- React 19 - Modern React with hooks
- Vite - Fast build tool and development server
- React Router DOM - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Axios - HTTP client for API requests
- React Toastify - Toast notifications
- Quill - Rich text editor for job descriptions
- Clerk - Authentication and user management
- Moment.js - Date formatting and manipulation
- Node.js - JavaScript runtime
- Express.js - Web application framework
- MongoDB - NoSQL database with Mongoose ODM
- JWT - JSON Web Tokens for authentication
- Multer - File upload handling
- Cloudinary - Cloud storage for file uploads
- Clerk - Authentication middleware
- Sentry - Error monitoring and performance tracking
- bcrypt - Password hashing
- CORS - Cross-origin resource sharing
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── context/ # React context for state management
│ │ └── assets/ # Static assets
│ ├── public/ # Public assets
│ └── package.json # Frontend dependencies
├── server/ # Backend Node.js application
│ ├── config/ # Database and service configurations
│ ├── controllers/ # Request handlers
│ ├── middleware/ # Custom middleware
│ ├── models/ # MongoDB schemas
│ ├── routes/ # API route definitions
│ ├── utils/ # Utility functions
│ └── package.json # Backend dependencies
└── README.md # This file
- Node.js (v18 or higher)
- MongoDB database
- Clerk account for authentication
- Cloudinary account for file storage
-
Clone the repository
git clone <repository-url> cd job-board-app
-
Install frontend dependencies
cd client npm install -
Install backend dependencies
cd ../server npm install -
Environment Setup
Create
.envfiles in both client and server directories:Server (.env)
PORT=5000 MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret CLERK_SECRET_KEY=your_clerk_secret_key SENTRY_DSN=your_sentry_dsn
Client (.env)
VITE_API_URL=http://localhost:5000 VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
-
Start the development servers
Start the backend server
cd server npm run serverStart the frontend development server
cd client npm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
GET /api/company- Get all companiesPOST /api/company- Create a new companyGET /api/company/:id- Get company by IDPUT /api/company/:id- Update companyDELETE /api/company/:id- Delete company
GET /api/jobs- Get all jobsPOST /api/jobs- Create a new jobGET /api/jobs/:id- Get job by IDPUT /api/jobs/:id- Update jobDELETE /api/jobs/:id- Delete job
GET /api/users- Get all usersPOST /api/users- Create a new userGET /api/users/:id- Get user by IDPUT /api/users/:id- Update user
- Create and manage job postings
- View and manage job applications
- Dashboard for analytics and insights
- Rich text editor for job descriptions
- File upload for company documents
- Browse available job opportunities
- Apply for jobs with detailed forms
- Track application status
- Upload resumes and cover letters
- Search and filter jobs
Frontend (client/)
npm run dev- Start development servernpm run build- Build for productionnpm run lint- Run ESLintnpm run preview- Preview production build
Backend (server/)
npm run server- Start development server with nodemonnpm start- Start production server
The application is configured for deployment on Vercel:
- Frontend: Configured with
vercel.jsonfor Vercel deployment - Backend: Configured with
vercel.jsonfor serverless functions
This project is licensed under the ISC License.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For support and questions, please open an issue in the repository.