A comprehensive online interview platform built with the MERN stack (MongoDB, Express.js, React, Node.js) featuring video calling, real-time code editing, and interview scheduling capabilities.
- Video Calling: Real-time peer-to-peer video communication using WebRTC
- Screen Sharing: Share your screen during interviews
- Code Editor: Monaco Editor with syntax highlighting and real-time collaboration
- Code Execution: Execute code in multiple programming languages using external APIs
- Interview Scheduling: Schedule and manage interviews with calendar integration
- Real-time Chat: Built-in chat system for communication during interviews
- User Management: Role-based access control (Interviewer, Candidate, Admin)
- Real-time Collaboration: Socket.io for live code editing and chat
- Authentication: JWT-based authentication with role-based authorization
- Responsive Design: Modern UI built with Tailwind CSS
- Code Execution: Integration with Judge0 API for code compilation and execution
- File Management: Upload/download code files
- Interview Feedback: Comprehensive feedback system for interviewers
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- Mongoose - ODM for MongoDB
- Socket.io - Real-time communication
- JWT - Authentication
- bcryptjs - Password hashing
- Express Validator - Input validation
- React - UI library
- Monaco Editor - Code editor
- Socket.io Client - Real-time communication
- Tailwind CSS - Styling
- React Router - Navigation
- React Hook Form - Form management
- React Hot Toast - Notifications
- Lucide React - Icons
- Judge0 - Code execution engine
- WebRTC - Video calling
Before running this application, make sure you have the following installed:
- Node.js (v14 or higher)
- MongoDB (v4.4 or higher)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd interview-platform
-
Install dependencies
# Install root dependencies npm install # Install server dependencies cd server npm install # Install client dependencies cd ../client npm install
-
Environment Setup
Create a
.envfile in theserverdirectory:# Server Configuration PORT=5000 NODE_ENV=development # MongoDB Configuration MONGODB_URI=mongodb://localhost:27017/interview-platform # JWT Configuration JWT_SECRET=your-super-secret-jwt-key-here JWT_EXPIRE=24h # Email Configuration (optional) EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_USER=your-email@gmail.com EMAIL_PASS=your-app-password # Code Execution API CODE_EXECUTION_API_URL=https://judge0-ce.p.rapidapi.com CODE_EXECUTION_API_KEY=your-rapidapi-key # Frontend URL CLIENT_URL=http://localhost:3000
-
Start MongoDB
# Start MongoDB service mongod -
Run the application
# From the root directory npm run devThis will start both the backend server (port 5000) and frontend client (port 3000).
interview-platform/
โโโ server/ # Backend server
โ โโโ models/ # MongoDB models
โ โโโ routes/ # API routes
โ โโโ middleware/ # Custom middleware
โ โโโ index.js # Server entry point
โ โโโ package.json
โโโ client/ # Frontend React app
โ โโโ public/ # Static files
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ contexts/ # React contexts
โ โ โโโ App.js # Main app component
โ โ โโโ index.js # Entry point
โ โโโ package.json
โโโ package.json # Root package.json
โโโ README.md
- Install MongoDB on your system
- Create a database named
interview-platform - Update the
MONGODB_URIin your.envfile
- Sign up for a RapidAPI account
- Subscribe to the Judge0 API
- Get your API key and update
CODE_EXECUTION_API_KEYin.env
- Set up SMTP credentials for email notifications
- Update email configuration in
.env
- Register/Login with interviewer role
- Schedule interviews with candidates
- Join interview rooms
- Conduct video interviews with code editing
- Provide feedback after interviews
- Register/Login with candidate role
- View scheduled interviews
- Join interview rooms
- Participate in video interviews
- Use the code editor for technical questions
- Manage all users and interviews
- View system statistics
- Monitor platform usage
- JWT-based authentication
- Password hashing with bcrypt
- Role-based access control
- Input validation and sanitization
- Rate limiting
- CORS protection
- Helmet.js security headers
- Set up a MongoDB Atlas cluster
- Deploy to Heroku, Vercel, or AWS
- Update environment variables
- Configure CORS for your domain
- Build the React app:
npm run build - Deploy to Netlify, Vercel, or AWS S3
- Update API endpoints in production
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Recording interviews
- Advanced analytics dashboard
- Integration with calendar services
- Mobile app development
- AI-powered interview assistance
- Multi-language support
- Advanced code execution features
- Interview templates
- Automated scheduling
- Performance monitoring
- Real-time video calling with WebRTC
- Optimized code editor with Monaco
- Efficient database queries with MongoDB
- Responsive design for all devices
- Fast loading times with optimized assets
Built with โค๏ธ using the MERN stack