https://github.com/ranjeetraj444/job-interview
A modern job platform with real-time interview request features for both applicants and recruiters. Built with React, Vite, Node.js, Express, MongoDB, and Socket.IO.
https://github.com/ranjeetraj444/job-interview
express jsonwebtoken mongodb nodejs react-router-dom socket-io vitejs
Last synced: 3 months ago
JSON representation
A modern job platform with real-time interview request features for both applicants and recruiters. Built with React, Vite, Node.js, Express, MongoDB, and Socket.IO.
- Host: GitHub
- URL: https://github.com/ranjeetraj444/job-interview
- Owner: RanjeetRaj444
- Created: 2025-06-11T04:08:03.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-12T07:13:47.000Z (about 1 year ago)
- Last Synced: 2025-06-12T08:27:07.555Z (about 1 year ago)
- Topics: express, jsonwebtoken, mongodb, nodejs, react-router-dom, socket-io, vitejs
- Language: JavaScript
- Homepage:
- Size: 55.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ผ Job Platform - Real-time Interview Request System
A modern job platform with real-time interview request features for both applicants and recruiters. Built with **React, Vite, Node.js, Express, MongoDB**, and **Socket.IO**.
---
## Frontend Deployed Link :-https://jobapplyplateform.netlify.app/
- User : can create a account for himself
- Admin / Recruiter : email: admin@gmail.com password: admin
## Backend Deployed Link :- https://job-interview-sm41.onrender.com
## ๐ Features
### Applicant Features
- Submit interview requests with live feedback
- Choose from job titles or enter custom ones
- Form validation with error messages
- Responsive and mobile-friendly UI
### Recruiter Features
- Real-time dashboard updates (no refresh needed)
- Accept interview requests in one click
- Visual connection status indicators
### Technical Highlights
- WebSocket-powered updates using **Socket.IO**
- RESTful API built with **Express.js**
- Database with **MongoDB + Mongoose**
- Clean and professional UI using plain CSS
- Responsive breakpoints and animations
---
## ๐ ๏ธ Tech Stack
### Frontend
- **React 18** + **Vite**
- **React Router DOM**
- **Socket.IO Client**
- **Plain CSS**
- **Fetch API**
- **Lucide React** (optional icons)
### Backend
- **Node.js** + **Express.js**
- **MongoDB** + **Mongoose**
- **Socket.IO Server**
- **CORS & Dotenv**
---
## ๐ Project Structure
### Frontend (`job-platform-frontend`)
```
src/
โโโ components/
โโโ pages/
โโโ services/
โโโ App.jsx
โโโ App.css
โโโ main.jsx
```
### Backend (`job-platform-backend`)
```
.
โโโ controllers/
โโโ models/
โโโ routes/
โโโ server.js
โโโ .env
```
---
## โ๏ธ Setup Instructions
### ๐น Prerequisites
- Node.js v16+
- MongoDB (local or Atlas)
- npm or yarn
### ๐น Frontend Setup
```bash
git clone
cd job-platform-frontend
npm install
npm run dev
```
Frontend runs at: `http://localhost:3000`
### ๐น Backend Setup
```bash
git clone
cd job-platform-backend
npm install
cp .env.example .env
# Edit .env with Mongo URI and Frontend URL
npm run dev
```
Backend runs at: `http://localhost:5000`
---
## ๐ API & Socket.IO Integration
### REST API Endpoints
| Method | Endpoint | Description |
| ------ | ------------------------------------ | --------------------------------------------- |
| `GET` | `/api/interview-requests` | Fetch all requests (supports ?status=pending) |
| `POST` | `/api/interview-requests` | Submit new interview request |
| `PUT` | `/api/interview-requests/:id/accept` | Accept an interview request |
| `GET` | `/api/health` | Health check |
### Data Schema
```json
{
"_id": "string",
"name": "string",
"email": "string",
"jobTitle": "string",
"status": "pending | accepted",
"createdAt": "date"
}
```
### Socket.IO Events
| Event | Description |
| ------------------------ | ------------------------- |
| `newInterviewRequest` | Emitted on new submission |
| `requestAccepted` | Emitted when accepted |
| `connect` / `disconnect` | Socket connection status |
---
## ๐ Environment Variables
### Frontend (`.env`)
```env
VITE_API_BASE_URL=http://localhost:5000
VITE_SOCKET_URL=http://localhost:5000
```
### Backend (`.env`)
```env
MONGODB_URI=mongodb://localhost:27017/job-platform
PORT=5000
FRONTEND_URL=http://localhost:3000
```
---
## ๐งช Testing & Deployment
### Scripts
Frontend:
```bash
npm run dev # Development server
npm run build # Production build
npm run preview # Preview build
```
Backend:
```bash
npm run dev # Development server with nodemon
npm start # Production server
```
### Deployment Options
#### Frontend
- **Vercel**: `vercel`
- **Netlify**: Drag and drop `dist`
#### Backend
- **Render / Railway / Heroku**
- Use MongoDB Atlas for cloud DB
---
## ๐งฐ Troubleshooting
- **CORS or 404 Errors**: Check backend URL & CORS config
- **Socket.IO Not Working**: Ensure server emits correct events
- **Build Errors**: Clear cache and reinstall
---
## ๐ค Contributing
1. Fork the repo
2. Create a branch: `git checkout -b feature-name`
3. Commit & push: `git commit -m "Add feature"`
4. Open a Pull Request
---
## ๐ License
MIT License. See `LICENSE` file.
---
**Built with โค๏ธ using React, Vite, Express, MongoDB & Socket.IO**