The future of interview preparation is voice-first. Practice with an AI interviewer that listens, adapts, and challenges you in real-time.
- Overview
- Features In-Depth
- Tech Stack & Architecture
- Architecture
- Project Structure
- Getting Started
- Environment Configuration
- Screenshots
- Contributing
- License
- Author
MockMate AI is a revolutionary interview preparation platform that transforms how developers practice for technical interviews. Unlike traditional text-based mock interviews or static question banks, MockMate AI provides a voice-first, real-time conversational experience powered by cutting-edge Voice AI technology.
| Traditional Prep | MockMate AI |
|---|---|
| β Read questions, type answers | β Speak naturally, get real-time feedback |
| β No follow-up questions | β Dynamic follow-ups based on your responses |
| β Mechanical interview feel | β Natural conversational flow |
| β One interview style | β Multiple modes: Behavioral, Technical, System Design |
| β Generic difficulty | β Adaptive Junior/Mid/Senior levels |
- π£οΈ Voice-First Experience: Powered by VAPI's sub-second latency voice pipeline
- π§ Intelligent Adaptation: AI interviewer adjusts questions based on your answers
- π Multiple Personas: Different interview styles for different roles
- π Real-Time Feedback: Live audio visualization and response analysis
- π¨ Premium UX: Glassmorphic design with 60fps animations
The heart of MockMate AI is its voice interaction system. Unlike text-based solutions, you speak naturally as you would in a real interview.
Your Voice β VAPI SDK β WebSocket β AI Processing β Voice Response
β β β
Real-time Low Latency Natural Speech
Streaming (<500ms) Generation
Key Technical Details:
- Sub-second latency: Responses feel natural, not robotic
- Speech-to-Text: Advanced transcription for accurate understanding
- Text-to-Speech: Natural-sounding AI voice responses
- Interrupt handling: You can interrupt just like in real conversations
- Context awareness: AI remembers previous answers in the conversation
MockMate AI offers three distinct interview modes, each with specialized question banks and evaluation criteria.
| Focus Area | Sample Questions | Evaluation Criteria |
|---|---|---|
| Leadership | "Tell me about a time you led a project through difficulties" | STAR method compliance |
| Conflict Resolution | "Describe a disagreement with a colleague" | Problem-solving approach |
| Failure & Growth | "Share a time you failed and what you learned" | Self-awareness & growth |
| Teamwork | "How do you handle a team member not pulling their weight?" | Collaboration skills |
STAR Method Focus:
- Situation: Context setting
- Task: Your responsibility
- Action: Steps you took
- Result: Measurable outcome
Deep dive into core computer science concepts and coding challenges.
| Category | Topics Covered | Difficulty Levels |
|---|---|---|
| Data Structures | Arrays, Linked Lists, Trees, Graphs, Heaps | Easy β Hard |
| Algorithms | Sorting, Searching, Dynamic Programming | With follow-ups |
| System Knowledge | OS, Databases, Networking | Conceptual |
| Language Specific | JavaScript, Python, Java, C++ | Framework-aware |
Architectural challenges for mid-to-senior level preparation.
| Design Challenge | Key Concepts | Discussion Points |
|---|---|---|
| URL Shortener | Hashing, Database design, Scaling | CAP theorem trade-offs |
| Chat Application | WebSockets, Message queues, Real-time | Presence handling |
| Social Media Feed | Caching, Fan-out, CDN | Content ranking |
| Payment System | ACID, Idempotency, Retry logic | Security considerations |
MockMate AI features a modern, premium interface that makes interview prep feel less daunting.
/* Core Design Tokens */
--glass-bg: rgba(255, 255, 255, 0.05);
--glass-border: rgba(255, 255, 255, 0.1);
--blur: backdrop-blur(16px);
--gradient-primary: linear-gradient(135deg, #6366f1, #8b5cf6);| Animation Type | Purpose | Implementation |
|---|---|---|
| Staggered Entry | Progressive reveal | 100ms delay between elements |
| 3D Tilt Effects | Interactive depth | Mouse-position-based transforms |
| Hover States | Feedback | Scale + glow transitions |
| Audio Visualizer | Real-time feedback | Canvas-based frequency bars |
The AI intelligently selects questions based on multiple factors.
| Level | Question Depth | Follow-up Intensity | Expected Time |
|---|---|---|---|
| Junior | Fundamentals | Light probing | 3-5 min/question |
| Mid | Application | Moderate deep-dives | 5-7 min/question |
| Senior | Architecture | Heavy trade-off discussions | 7-10 min/question |
Robust user management powered by NextAuth.js with multiple provider support.
Supported Providers:
- π GitHub: Perfect for developers
- π΅ Google: Universal access
- π§ Email/Password: Traditional option
| Technology | Why We Chose It | Benefit |
|---|---|---|
| Next.js 14 | App Router + Server Components | Optimal performance, SEO |
| TypeScript | Type safety at scale | Fewer runtime errors |
| VAPI | Purpose-built for voice AI | Sub-second latency |
| MongoDB | Flexible schema | Easy to store varied interview data |
| TailwindCSS | Rapid styling | Consistent design system |
| Framer Motion | Declarative animations | Premium feel with minimal effort |
app/directory with nested layouts- Server Components for initial data fetching
- Client Components for interactive elements
- API Routes for backend logic
- Middleware for auth protection
interface InterviewSession {
id: string;
userId: string;
mode: 'behavioral' | 'technical' | 'system-design';
difficulty: 'junior' | 'mid' | 'senior';
questions: Question[];
startedAt: Date;
}- 3D Card Tilt Effects
- Staggered entry animations
- Audio visualization components
| Factor | MongoDB Advantage |
|---|---|
| Flexible Schema | Interview sessions vary in structure |
| JSON Storage | Direct mapping to TypeScript objects |
| Easy Scaling | Built-in horizontal scaling |
Collections:
mockmate-ai-db/
βββ users # User accounts
βββ interviews # Session history
βββ questions # Question bank
import Vapi from '@vapi-ai/web';
const vapi = new Vapi(process.env.NEXT_PUBLIC_VAPI_WEB_TOKEN);
await vapi.start({
workflowId: process.env.NEXT_PUBLIC_VAPI_WORKFLOW_ID,
variables: { mode: 'technical', difficulty: 'senior' }
});
vapi.on('speech-start', () => setIsSpeaking(true));
vapi.on('message', (msg) => updateTranscript(msg));graph TB
subgraph "Client Layer"
A[Next.js App] --> B[App Router]
A --> C[Framer Motion]
A --> D[TailwindCSS]
end
subgraph "Voice Layer"
E[VAPI Web SDK] --> F[WebSocket Connection]
F --> G[Speech-to-Text]
F --> H[AI Processing]
F --> I[Text-to-Speech]
end
subgraph "Auth Layer"
J[NextAuth.js] --> K[JWT Tokens]
J --> L[OAuth Providers]
end
subgraph "Data Layer"
N[(MongoDB Atlas)] --> O[Users]
N --> P[Interviews]
N --> Q[Questions]
end
A --> E
A --> J
A --> N
style A fill:#000000,stroke:#fff,stroke-width:2px
style E fill:#6366f1,stroke:#fff,stroke-width:2px
style N fill:#47A248,stroke:#fff,stroke-width:2px
MockMate-AI/
βββ src/
β βββ app/ # Next.js App Router
β β βββ (auth)/ # Auth routes
β β βββ (main)/ # Main app routes
β β βββ api/ # API routes
β β βββ landingPage/ # Public landing
β β
β βββ components/ # React Components
β β βββ Agent.tsx # VAPI integration
β β βββ InterviewModeSelector.tsx
β β βββ AudioVisualizer.tsx
β β βββ ui/ # Shared UI
β β
β βββ constants/ # Static Data
β β βββ questions/ # Question banks
β β
β βββ lib/ # Utilities
β β βββ db.ts # MongoDB connection
β β βββ auth.ts # Auth utilities
β β
β βββ models/ # Mongoose Schemas
β βββ types/ # TypeScript Interfaces
β
βββ public/ # Static assets
βββ .env.local # Environment variables
βββ package.json
| Requirement | Version | Purpose |
|---|---|---|
| Node.js | 18.x+ | Runtime environment |
| MongoDB | Atlas or Local | Database |
| VAPI Account | Free tier | Voice AI |
# 1. Clone the repository
git clone https://github.com/iam-sarthakdev/MockMate-AI.git
cd MockMate-AI
# 2. Install dependencies
npm install
# 3. Set up environment variables
cp .env.example .env.local
# 4. Run development server
npm run devOpen http://localhost:3000 in your browser.
Create a .env.local file:
# Database
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/mockmate-ai
# NextAuth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-super-secret-random-string
# VAPI Voice AI
NEXT_PUBLIC_VAPI_WEB_TOKEN=your_vapi_public_key
NEXT_PUBLIC_VAPI_WORKFLOW_ID=your_vapi_workflow_id
# OAuth (Optional)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret| Service | Link |
|---|---|
| MongoDB Atlas | mongodb.com/atlas |
| VAPI | vapi.ai |
| GitHub OAuth | github.com/settings/developers |
| Google OAuth | console.cloud.google.com |
Premium landing page with compelling value proposition - Visit Live Demo to experience the full UI
3D card interface for selecting interview type (Behavioral/Technical/System Design)
Voice-first interview with real-time audio visualization and AI responses
User dashboard showing interview history and performance metrics
Note: To see the full experience, visit our Live Demo
Contributions are welcome!
# 1. Fork the Project
gh repo fork iam-sarthakdev/MockMate-AI
# 2. Create Feature Branch
git checkout -b feature/AmazingFeature
# 3. Commit Changes
git commit -m 'Add some AmazingFeature'
# 4. Push to Branch
git push origin feature/AmazingFeature
# 5. Open Pull Request- Use TypeScript with strict typing
- Follow existing TailwindCSS patterns
- Use conventional commits
Distributed under the MIT License. See LICENSE for more information.
Sarthak Dev
| Platform | Link |
|---|---|
| π GitHub | @iam-sarthakdev |
| πΌ LinkedIn | Sarthak Kanoi |
| π§ Email | sarthak1712005@gmail.com |
- VAPI - Voice AI platform
- Next.js - React framework
- Framer Motion - Animations
- TailwindCSS - Styling
- MongoDB - Database
Transform your interview preparation with voice-first AI practice.
Made with β€οΈ by Sarthak Dev











