A comprehensive, AI-driven interview preparation platform that simulates real interview experiences with intelligent conversation flow, professional speech processing, and detailed performance analytics.
- Dynamic Question Generation: Context-aware questions using Google's Gemini AI
- Intelligent Follow-ups: Questions adapt based on your responses and resume
- 10-Question Interview: Structured interview flow with professional pacing
- Resume Analysis: AI analyzes your uploaded resume to generate relevant questions
- Advanced Speech-to-Text: Deepgram Nova-3 for enterprise-grade transcription
- High-Quality AI Voice: Murf TTS for natural, professional interviewer voice
- Real-time Audio Capture: MediaRecorder API for seamless voice interaction
- Smart Audio Controls: Mic disabled during AI processing for optimal experience
- 5-Minute Timer: Color-coded countdown with automatic submission
- Session Persistence: Resume interrupted interviews
- Auto-save Progress: Conversation history saved in real-time
- Completion Tracking: Mark sessions as completed with timestamps
- Performance Scores: Technical, Communication, and Confidence ratings (0-10)
- Detailed Feedback: AI-generated strengths and weaknesses analysis
- Dashboard Overview: Performance metrics and analytics across all sessions
- Interview History: Paginated view of all past interviews with scores
- Progress Tracking: Historical performance visualization and improvement trends
- Session Reports: Complete transcript and detailed analysis for each interview
- Multiple Login Options: Email/password and Google OAuth
- JWT Authentication: Secure session management
- User Profiles: Personalized experience with saved data
- Protected Routes: Secure access to interview features
- Terminal-Themed Design: Unique, developer-friendly interface
- Responsive Layout: Works perfectly on desktop and mobile
- Real-time Feedback: Loading states, animations, and visual cues
- Accessible Design: WCAG-compliant interface elements
- Runtime: Node.js with Express.js framework
- Database: MongoDB with Mongoose ODM
- Authentication: JWT tokens with bcrypt encryption
- File Processing: Multer for resume uploads, PDF parsing
- AI Integration: Google Gemini AI, Deepgram, Murf APIs
- Framework: React 18 with Vite build tool
- Styling: Tailwind CSS with custom components
- State Management: Zustand for global state
- Routing: React Router for navigation
- Audio: MediaRecorder API for voice capture
- UI Components: Custom terminal-themed component library
- π§ Google Gemini: Dynamic question generation and analysis
- π€ Deepgram Nova-3: Professional speech-to-text transcription
- π£οΈ Murf TTS: High-quality text-to-speech synthesis
- Node.js 18+ and npm
- MongoDB database
- API keys for Gemini, Deepgram, and Murf
git clone https://github.com/meetbatra/interview-buddy.git
cd interview-buddy
cd backend
npm install
# Create .env file
touch .env
Configure your .env
file:
PORT=8080
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
GEMINI_API_KEY=your_google_gemini_api_key
DEEPGRAM_API_KEY=your_deepgram_api_key
MURF_API_KEY=your_murf_api_key
GOOGLE_CLIENT_ID=your_google_oauth_client_id
# Start backend server
npm run dev
cd ../frontend
npm install
# Create .env file
touch .env
Configure your frontend .env
file:
VITE_API_URL=http://localhost:8080/api
VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id
# Start frontend development server
npm run dev
- Frontend: http://localhost:5173
- Backend API: http://localhost:8080
- Sign up with email/password or Google OAuth
- Secure authentication with JWT tokens
- Drag & drop or click to upload PDF resume
- AI analyzes your background for personalized questions
- Enter a brief bio about yourself
- Helps AI understand your career goals and experience
- 5-minute timed interview session
- Speak naturally - AI transcribes your responses
- Answer 10 contextual questions based on your background
- Get detailed performance analysis
- View scores for technical skills, communication, and confidence
- Read AI-generated feedback on strengths and areas for improvement
- Access complete conversation transcript
- View dashboard with performance analytics
- Browse interview history with pagination
- Monitor improvement trends over time
- Compare scores across multiple sessions
interview-buddy/
βββ backend/ # Node.js backend application
β βββ controllers/ # Route handlers and business logic
β β βββ auth.js # Authentication (signup, login, Google OAuth)
β β βββ dashboard.js # Dashboard analytics and interview history
β β βββ interview.js # Interview management and processing
β βββ models/ # MongoDB schemas and models
β β βββ user.js # User model with authentication fields
β β βββ interviewSession.js # Interview session with conversation history
β βββ routes/ # API route definitions
β β βββ auth.js # Authentication routes
β β βββ dashboard.js # Dashboard and analytics routes
β β βββ interview.js # Interview management routes
β βββ services/ # External API integrations
β β βββ geminiService.js # Google Gemini AI integration
β β βββ speechToTextService.js # Deepgram speech-to-text
β β βββ murffService.js # Murf text-to-speech
β β βββ pdfService.js # PDF resume parsing
β βββ middleware/ # Authentication and validation middleware
β βββ config/ # Database and app configuration
β βββ utils/ # Utility functions (JWT, etc.)
β βββ uploads/ # Temporary file storage (resumes, audio)
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ auth/ # Authentication components
β β β βββ dashboard/ # Dashboard and analytics components
β β β βββ home/ # Home page components
β β β βββ interview/ # Interview session components
β β β βββ report/ # Report and results components
β β β βββ shared/ # Shared UI components
β β β βββ ui/ # Base UI components (buttons, inputs, etc.)
β β βββ pages/ # Main application pages
β β β βββ HomePage.jsx # Landing page with resume upload
β β β βββ LoginPage.jsx # User authentication
β β β βββ SignupPage.jsx # User registration
β β β βββ DashboardPage.jsx # Analytics dashboard
β β β βββ InterviewPage.jsx # Interview session
β β β βββ ReportPage.jsx # Interview results
β β βββ hooks/ # Custom React hooks
β β β βββ useInterviewLogic.js # Interview session management
β β βββ stores/ # Zustand state management
β β β βββ authStore.js # Authentication state
β β β βββ interviewStore.js # Interview session state
β β βββ api/ # API service functions
β β β βββ userApi.js # Authentication API calls
β β β βββ interviewApi.js # Interview management API
β β β βββ dashboardApi.js # Dashboard and analytics API
β β βββ assets/ # Static assets and images
β βββ public/ # Public static files
βββ README.md # Project documentation
POST /api/auth/signup
- User registration with username, email, passwordPOST /api/auth/login
- User login with email/passwordPOST /api/auth/google
- Google OAuth authentication
POST /api/interview/start
- Start new interview session (with resume upload)POST /api/interview/:sessionId/transcribe
- Transcribe audio response to textPOST /api/interview/:sessionId/next
- Get next question based on previous answerPOST /api/interview/:sessionId/end
- End interview and get final completion messageGET /api/interview/:sessionId/report
- Get detailed interview performance report
GET /api/dashboard/overview
- Get dashboard analytics and performance metricsGET /api/dashboard/history
- Get paginated interview history with scores
The AI interviewer generates questions that:
- Build upon your previous answers
- Explore different aspects of your experience
- Progress from general to specific topics
- Adapt difficulty based on your responses
- Crystal Clear Transcription: Deepgram's Nova-3 model ensures accurate speech recognition
- Natural AI Voice: Murf's premium TTS creates a realistic interviewer experience
- Optimized Audio Flow: Smart mic management prevents feedback and ensures smooth conversation
Your interview is evaluated across multiple dimensions:
- Technical Skills: Knowledge depth and problem-solving approach
- Communication: Clarity, structure, and articulation
- Confidence: Delivery, poise, and presence
- Overall Performance: Comprehensive scoring with detailed feedback
- Sessions auto-save progress every response
- Resume interrupted interviews seamlessly
- Timer management with visual countdown
- Automatic submission prevents incomplete sessions
- Dashboard analytics for progress tracking
- Historical performance comparison
- JWT Authentication: Secure token-based authentication
- Password Encryption: Bcrypt hashing for user passwords
- Input Validation: Comprehensive request validation
- File Upload Security: Type and size validation for resumes
- Rate Limiting: API protection against abuse
- CORS Configuration: Secure cross-origin requests
MONGODB_URI
- MongoDB connection stringJWT_SECRET
- JWT signing secretGEMINI_API_KEY
- Google Gemini AI API keyDEEPGRAM_API_KEY
- Deepgram speech-to-text API keyMURF_API_KEY
- Murf text-to-speech API keyGOOGLE_CLIENT_ID
- Google OAuth client IDPORT
- Server port (default: 8080)VITE_API_URL
- Backend API URL for frontendVITE_GOOGLE_CLIENT_ID
- Google OAuth client ID for frontend
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
For support, questions, or feature requests:
- Create an issue on GitHub
- Email: [meetbatra56@example.com]
- Google Gemini AI for intelligent conversation generation
- Deepgram for professional speech-to-text processing
- Murf for high-quality text-to-speech synthesis
- MongoDB for robust data storage
- React & Node.js communities for excellent frameworks
Built with β€οΈ by Meet Batra
Interview Buddy - Your AI-powered career companion π