An AI-powered interview preparation platform that helps users practice technical interviews through personalized question generation, real-time feedback, and concept explanations.
- Secure Authentication: JWT-based user authentication with password hashing
- Profile Management: Upload profile pictures and manage user information
- Session Tracking: Keep track of interview preparation sessions
- Customized Question Generation: Generate interview questions based on:
- Job role (e.g., Frontend Developer, Backend Engineer)
- Years of experience
- Specific topics to focus on
- Detailed Answers: Each question comes with comprehensive, beginner-friendly answers
- Concept Explanations: Get in-depth explanations for any interview question
- Code Examples: Answers include relevant code snippets where applicable
- Create Interview Sessions: Set up practice sessions with specific parameters
- Question Pinning: Mark important questions for later review
- Notes: Add personal notes to questions
- Progress Tracking: Monitor your interview preparation progress
- Responsive Design: Works seamlessly on desktop and mobile devices
- Modern UI: Clean, intuitive interface built with React
- Real-time Notifications: Toast notifications for user actions
- Markdown Support: Rich text rendering for answers and explanations
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JSON Web Tokens (JWT) with bcrypt password hashing
- AI Integration: Google Generative AI
- File Uploads: Multer for profile image handling
- CORS: Cross-origin resource sharing support
- Framework: React 19
- Build Tool: Vite
- Routing: React Router DOM
- HTTP Client: Axios
- Styling: Custom CSS with Framer Motion animations
- Markdown Rendering: React Markdown with syntax highlighting
- Notifications: React Hot Toast
- Date Handling: Moment.js
Before running this application, make sure you have the following installed:
- Node.js (v16 or higher)
- MongoDB (local installation or MongoDB Atlas)
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd interview-app
-
Backend Setup
cd backend npm install -
Frontend Setup
cd ../frontend/interview-prep-app npm install
Create a .env file in the backend directory with the following variables:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/interview-app
JWT_SECRET=your-super-secret-jwt-key
GOOGLE_API_KEY=your-google-generative-ai-api-keyCreate a .env file in the frontend/interview-prep-app directory:
VITE_API_BASE_URL=http://localhost:5000/api-
Start MongoDB Make sure MongoDB is running on your system.
-
Start the Backend Server
cd backend npm run devThe server will start on
http://localhost:5000 -
Start the Frontend Development Server
cd frontend/interview-prep-app npm run devThe app will be available at
http://localhost:5173
- Sign Up/Login: Create an account or log in to your existing account
- Dashboard: View your interview preparation sessions
- Create Session: Set up a new practice session by specifying:
- Job role
- Years of experience
- Topics to focus on
- Generate Questions: Use AI to generate personalized interview questions
- Practice: Answer questions and review provided answers
- Get Explanations: Request detailed explanations for complex concepts
- Track Progress: Pin important questions and add notes for review
interview-app/
├── backend/
│ ├── config/
│ │ └── db.js # Database connection
│ ├── controllers/
│ │ ├── aiController.js # AI question/explanation generation
│ │ ├── authController.js # Authentication logic
│ │ ├── questionController.js # Question management
│ │ └── sessionController.js # Session management
│ ├── middlewares/
│ │ ├── authMiddleware.js # JWT authentication middleware
│ │ └── uploadMiddleware.js # File upload handling
│ ├── models/
│ │ ├── Question.js # Question schema
│ │ ├── Session.js # Session schema
│ │ └── User.js # User schema
│ ├── routes/
│ │ ├── authRoutes.js # Authentication routes
│ │ ├── questionRoutes.js # Question CRUD routes
│ │ └── sessionRoutes.js # Session CRUD routes
│ ├── uploads/ # User uploaded files
│ ├── utils/
│ │ └── prompts.js # AI prompt templates
│ ├── package.json
│ └── server.js # Main server file
└── frontend/
└── interview-prep-app/
├── public/
├── src/
│ ├── components/ # Reusable UI components
│ ├── context/ # React context providers
│ ├── pages/ # Page components
│ ├── utils/ # Utility functions
│ ├── App.jsx # Main app component
│ └── main.jsx # App entry point
├── package.json
└── vite.config.js
POST /api/auth/register- User registrationPOST /api/auth/login- User login
GET /api/sessions- Get user's sessionsPOST /api/sessions- Create new sessionPUT /api/sessions/:id- Update sessionDELETE /api/sessions/:id- Delete session
GET /api/questions/:sessionId- Get questions for a sessionPOST /api/questions- Create new questionPUT /api/questions/:id- Update questionDELETE /api/questions/:id- Delete question
POST /api/ai/generate-questions- Generate interview questionsPOST /api/ai/generate-explanation- Generate concept explanation