Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


๐ŸŽฏ MockMate

AI-powered mock interview platform that simulates real interviews with voice, code, and smart feedback โ€” so you walk in prepared, not surprised.

Stars Forks MERN Gemini AI Azure AWS

Demo โ€ข Features โ€ข Tech Stack โ€ข Architecture โ€ข Getting Started โ€ข API Endpoints โ€ข Future Scope


๐ŸŽฌ Demo

Dashboard Resume Analyzer Interview Room
Dashboard Resume Analyzer Interview Room

๐Ÿ“ธ Tip for recruiters: Clone + run with npm run dev in both /client and /server, or check the Getting Started section below.


โœจ Features

  • ๐Ÿค– AI Question Generation โ€” Gemini AI generates role-specific, dynamic interview questions (DSA, Core CS, System Design, HR)
  • ๐ŸŽ™๏ธ Real-Time Voice Transcription โ€” Azure AI Speech-to-Text converts your spoken answers to text live, during the interview
  • ๐Ÿ’ป In-Browser Code Editor โ€” Monaco Editor (same as VS Code) with Judge0 API for multi-language code execution & evaluation
  • ๐Ÿ“„ Smart Resume Analyzer โ€” Upload your PDF resume; Gemini AI scores it and suggests targeted improvements
  • ๐Ÿ“Š Performance Analytics โ€” Visual dashboards showing your weak topics, score trends, and interview history using Recharts
  • ๐Ÿ† Leaderboard โ€” Compete with other users and track your rank across sessions
  • ๐Ÿƒ AI Flashcards โ€” Auto-generated flashcards based on your weak areas to help you revise smarter
  • ๐Ÿ“‘ PDF Report Export โ€” Download a detailed performance report for any completed interview session
  • ๐Ÿ” Secure Auth โ€” Firebase Authentication (Google + Email/Password) + JWT-based session management
  • ๐Ÿข Company-Specific Prep โ€” Tailored question sets based on target company interview patterns

๐Ÿ› ๏ธ Tech Stack

Frontend

Technology Purpose
React 18 + Vite + TypeScript Core UI framework
Tailwind CSS + Radix UI Styling & accessible component primitives
React Router v7 Client-side navigation
Monaco Editor (@monaco-editor/react) In-browser code editor (VS Code engine)
Azure AI Speech SDK Real-time speech-to-text in browser
Firebase JS SDK Google/Email authentication
Recharts Performance analytics charts
Axios HTTP client

Backend

Technology Purpose
Node.js + Express.js + TypeScript REST API server
MongoDB + Mongoose Database & ODM
Firebase Admin SDK Server-side auth token verification
Google Gemini AI API Question generation, answer review, resume analysis
Judge0 API (via RapidAPI) Sandboxed multi-language code execution
PDFKit Dynamic PDF report generation
Multer PDF resume file upload handling
JWT + bcryptjs Session tokens & password hashing
Serverless HTTP AWS Lambda adapter

DevOps & Deployment

Service Role
AWS Lambda + API Gateway Serverless backend deployment
Netlify Frontend hosting
MongoDB Atlas Cloud database
Docker Containerized backend (Dockerfile included)

๐Ÿ—๏ธ Architecture

MockMate Architecture


๐Ÿ“ Folder Structure

MockMate/
โ”œโ”€โ”€ client/                     # Frontend (React + Vite)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ api/                # Axios API call wrappers
โ”‚   โ”‚   โ”œโ”€โ”€ components/         # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/              # Custom React hooks
โ”‚   โ”‚   โ”œโ”€โ”€ pages/              # Route-level page components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CreateInterview.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ InterviewInterfacePage.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ InterviewDetails.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ InterviewHistory.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ResumeAnalyzer.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Analyzer.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Flashcards.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Leaderboard.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LandingPage.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoginPage.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SignupPage.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ types/              # TypeScript type definitions
โ”‚   โ”‚   โ””โ”€โ”€ utils/              # Helper utilities
โ”‚   โ””โ”€โ”€ .env                    # Client env vars (see below)
โ”‚
โ”œโ”€โ”€ server/                     # Backend (Node.js + Express)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ config/             # App configuration
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/        # Route handler logic
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ gemini.controllers.ts      # AI question gen & review
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mockinterview.controllers.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ resume.controllers.ts      # PDF parsing + AI analysis
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ judge0.controllers.ts      # Code execution
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ report.controllers.ts      # PDF report generation
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ analytics.controllers.ts   # Performance weakness detection
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ leaderboard.controllers.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ learning.controllers.ts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ user.controllers.ts
โ”‚   โ”‚   โ”œโ”€โ”€ database/           # MongoDB connection
โ”‚   โ”‚   โ”œโ”€โ”€ firebase/           # Firebase Admin setup
โ”‚   โ”‚   โ”œโ”€โ”€ middlewares/        # Auth middleware (JWT)
โ”‚   โ”‚   โ”œโ”€โ”€ models/             # Mongoose schemas
โ”‚   โ”‚   โ”œโ”€โ”€ routes/             # Express route definitions
โ”‚   โ”‚   โ”œโ”€โ”€ types/              # TypeScript types
โ”‚   โ”‚   โ””โ”€โ”€ utils/              # Async handler, helpers
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ””โ”€โ”€ .env                    # Server env vars (see below)
โ”‚
โ””โ”€โ”€ README.md

๐Ÿš€ Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB Atlas account (or local MongoDB)
  • Google Gemini API key
  • Azure Cognitive Services account (for Speech-to-Text)
  • Firebase project
  • RapidAPI account with Judge0 subscribed

1. Clone the Repository

git clone https://github.com/VedantPawar05/Mockmate.git
cd Mockmate

2. Setup Server

cd server
npm install

Create a .env file in /server (see Environment Variables):

cp .env.example .env   # then fill in your values
npm run dev            # Starts on http://localhost:8000

3. Setup Client

cd client
npm install

Create a .env file in /client:

cp .env.example .env   # then fill in your values
npm run dev            # Starts on http://localhost:5173

๐Ÿ” Environment Variables

/server/.env

# Database
MONGO_URI=                        # MongoDB Atlas connection string

# Auth
JWT_SECRET=                       # Random secret string for JWT signing

# CORS
FRONTEND_URL=http://localhost:5173

# Google Gemini AI
GEMINI_API_KEY=                   # From https://aistudio.google.com/

# Firebase Admin (for server-side token verification)
FIREBASE_ACCOUNT_PROJECT_ID=
FIREBASE_ACCOUNT_CLIENT_EMAIL=
FIREBASE_ACCOUNT_PRIVATE_KEY=     # Multi-line key โ€” wrap in quotes

# Judge0 (Code Execution via RapidAPI)
JUDGE0_API_URL=https://judge0-ce.p.rapidapi.com
JUDGE0_API_KEY=                   # From https://rapidapi.com/judge0-official/api/judge0-ce
JUDGE0_API_HOST=judge0-ce.p.rapidapi.com

/client/.env

# Backend API
VITE_API_BASE_URL=http://localhost:8000

# Azure AI Speech-to-Text
VITE_AZURE_SUBSCRIPTION_KEY=      # From Azure Cognitive Services
VITE_AZURE_REGION=                # e.g. eastus

# Firebase (from Firebase Console โ†’ Project Settings)
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
VITE_FIREBASE_MEASUREMENT_ID=

๐Ÿ“ก API Endpoints

Auth & Users โ€” /api/users

Method Endpoint Description Auth
POST /register Register new user โŒ
POST /login Login with email/password โŒ
GET /getuserdetails Get logged-in user profile โœ…
GET /dashboard-stats Get user's dashboard stats โœ…
PUT /edit Update user profile โœ…
POST /logout Logout user โœ…

Mock Interviews โ€” /api/mockinterview

Method Endpoint Description Auth
POST /create Create a new interview session โœ…
GET / Get all interviews for user โœ…
GET /:id Get interview by ID โœ…
PUT /edit/:id Update interview session โœ…
DELETE /delete/:id Delete interview session โœ…

AI (Gemini) โ€” /api/ai

Method Endpoint Description Auth
POST /generatequestions Generate role-specific interview questions โœ…
POST /generatereview AI review & score of a submitted answer โœ…

Features โ€” /api

Method Endpoint Description Auth
GET /leaderboard Get global leaderboard rankings โœ…
POST /resume/analyze Upload PDF resume & get AI analysis โœ…
POST /execute Execute code via Judge0 โœ…
GET /reports/pdf/:sessionId Download PDF performance report โœ…
GET /companies Get all company interview configs โœ…
GET /companies/:companyName Get config for specific company โœ…

Learning โ€” /api/learning

Method Endpoint Description Auth
GET /playlist/:topic Get learning playlist by topic โœ…
POST /progress Save learning progress โœ…
GET /progress/:userId Get user's learning progress โœ…
DELETE /progress/:userId/:topic Reset progress for a topic โœ…

Analytics โ€” /api/analytics

Method Endpoint Description Auth
GET /weakness Get AI-analyzed weak areas from history โœ…

๐Ÿ”ฎ Future Scope

  • ๐Ÿค Peer-to-Peer Mock Interviews โ€” Real-time collaborative interviews between two users via WebRTC
  • ๐Ÿง  Adaptive Difficulty โ€” Questions that get harder/easier based on live performance signals
  • ๐Ÿ“ฑ Mobile App โ€” React Native port for on-the-go interview prep
  • ๐Ÿ”— LinkedIn Integration โ€” Auto-populate job role from LinkedIn profile for instant personalized prep
  • ๐ŸŒ Multilingual Support โ€” Azure STT + Gemini to support interviews in regional languages
  • ๐Ÿ“น Video Analysis โ€” Webcam-based posture, eye contact, and confidence scoring using MediaPipe
  • ๐Ÿข Enterprise Dashboard โ€” For companies to run structured technical screening pipelines
  • ๐Ÿ”” Streak & Notifications โ€” Daily practice streaks with push notifications to keep users consistent

๐Ÿ‘ฅ Contributors

Vedant Pawar

Pull requests are welcome! Feel free to open an issue first to discuss what you'd like to change.


๐Ÿ“„ License

This project is open-source. See the LICENSE file for details.


Made with โค๏ธ by Vedant Pawar

About

AI-powered mock interview platform built with the MERN stack. Uses Gemini AI for dynamic question generation, Azure AI for real-time speech-to-text transcription, and Socket.io for live interview sessions. Deployed serverlessly on AWS Lambda with a React + Vite frontend.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages