An AI-powered interview preparation platform built with the MERN (MongoDB, Express, React, Node.js) stack. This application helps users practice DSA problems, conduct mock interviews, and track their progress.
- User Authentication: Secure login and registration system with JWT
- DSA Practice: Extensive collection of Data Structures and Algorithms problems
- Mock Interviews: AI-powered mock interview sessions with real-time feedback
- Progress Tracking: Track your progress across different topics and subjects
- Admin Dashboard: Manage problems, subjects, and topics
- Subject Management: Organize DSA problems by subjects and topics
- Performance Analytics: Visual charts and statistics of your progress
- React (v19.2.0) - UI library
- Vite (v7.3.1) - Build tool and dev server
- TailwindCSS (v4.2.1) - Utility-first CSS framework
- React Router (v7.13.1) - Client-side routing
- Axios - HTTP client for API calls
- React Hook Form - Form state management
- Recharts - Data visualization library
- React Hot Toast - Notification system
- Node.js - Runtime environment
- Express (v5.2.1) - Web framework
- MongoDB (with Mongoose) - Database
- JWT - Authentication
- Groq SDK - AI integration for interview feedback
- ElevenLabs - Text-to-speech API
- OpenAI - Additional AI capabilities
- Node.js (v14 or higher)
- npm or yarn
- MongoDB (local or MongoDB Atlas)
- Git
git clone https://github.com/premngowda31-collab/Interview_prep.git
cd Interview_prepcd backend
npm installCreate a .env file in the backend folder with the following variables:
MONGO_URI=mongodb://127.0.0.1:27017/interview_prep
GROQ_API_KEY=your_groq_api_key
JWT_SECRET=your_secret_key
JWT_EXPIRES_IN=7d
PORT=5000
CLIENT_URL=http://localhost:5173
ELEVENLABS_API_KEY=your_elevenlabs_api_key
OPENAI_API_KEY=your_openai_api_keycd frontend
npm installcd backend
npm run devBackend will run on http://localhost:5000
In a new terminal:
cd frontend
npm run devFrontend will run on http://localhost:5173
Interview_Mern/
βββ backend/
β βββ config/ # Database configuration
β βββ controllers/ # Route controllers
β βββ middleware/ # Custom middleware
β βββ models/ # Database schemas
β βββ routes/ # API routes
β βββ services/ # Business logic
β βββ Server.js # Main server file
β βββ .env # Environment variables
β
βββ frontend/
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ services/ # API service calls
β β βββ context/ # React context for state
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β βββ vite.config.js # Vite configuration
β
βββ README.md
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current userPUT /api/auth/profile- Update user profile
GET /api/dsa/problems- Get all problemsGET /api/dsa/problems/:id- Get problem detailsPOST /api/dsa/problems/:id/solve- Mark problem as solvedDELETE /api/dsa/problems/:id/solve- Unmark problemGET /api/dsa/companies- Get companies listGET /api/dsa/topics- Get topics list
POST /api/interview/start- Start interview sessionGET /api/interview- Get all interviewsGET /api/interview/:id- Get interview detailsPUT /api/interview/:id/answer/:qIdx- Submit answerPUT /api/interview/:id/complete- Complete interviewGET /api/interview/:id/phase- Get current phase
GET /api/progress- Get user progress
POST /api/admin/subjects- Create subjectPOST /api/admin/problems- Create problemPUT /api/admin/problems/:id- Update problemDELETE /api/admin/problems/:id- Delete problem
The application uses JWT (JSON Web Tokens) for authentication. Tokens are stored in localStorage and sent with each request via the Authorization header.
The application uses:
- Groq API for fast AI responses in interviews
- OpenAI API for additional AI capabilities
- ElevenLabs for text-to-speech functionality
- Email, password (hashed), name
- Role (user/admin)
- Profile information
- Title, description, difficulty
- Company tags, topics
- Solutions and examples
- Questions, answers
- Feedback from AI
- Performance metrics
- Solved problems count
- Topics covered
- Performance stats
Ensure MongoDB is running locally or update MONGO_URI in .env to use MongoDB Atlas.
If ports 5000 or 5173 are in use, update the PORT in .env for backend or use npm run dev -- --port 3000 for frontend.
Ensure CLIENT_URL in backend .env matches your frontend URL.
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
- Prem Ngowda - Initial work
- MongoDB for database solutions
- Groq for fast AI inference
- ElevenLabs for text-to-speech
- OpenAI for AI capabilities
- React ecosystem contributors
For support, email your-email@example.com or open an issue on GitHub.
Happy Learning! π