Skip to content

Repository files navigation

InterviewForge AI — Next-Gen AI Interview Simulation Platform

Frontend CI Backend CI License 100% Free PRs Welcome Stars Java Next.js Gemini PostgreSQL TypeScript React Docker


Platform Stats

InterviewForge AI is a production-grade, full-stack AI platform that simulates realistic interviews across 30+ career domains, evaluates answers with multi-dimensional scoring, provides ATS resume intelligence, offers a 500+ LeetCode Coding Arena with live code sandbox, features Voice AI mock interviews with confidence metrics, includes an interactive System Design Canvas, generates personalized career roadmaps, and delivers company-targeted prep for FAANG & 12+ top-tier companies — all powered by Google Gemini 2.5 Flash and 100% free for everyone.


Feature Overview
InterviewForge AI Dashboard Workspace



💡 The Problem

Monday:    "I have a Google interview next week. Where do I even start?"
Tuesday:   "I practiced 200 random LeetCode problems. None were relevant."
Wednesday: "My resume got auto-rejected by the ATS. Again."
Thursday:  "I bombed the behavioral round. I didn't know STAR format existed."
Friday:    "I froze during the system design round. Couldn't draw anything."
Saturday:  ✅ You deployed InterviewForge on Monday. You aced every round.

❌ Traditional Interview Prep

- 😰 Generic question lists with zero personalization
- 📝 No structured, measurable feedback on answers
- 🔄 Zero improvement tracking across sessions
- 📉 No weakness detection or skill-gap analysis
- 🤷 No career roadmap or progression guidance
- 🏢 No company-specific preparation available
- 💻 No live coding sandbox or LeetCode practice
- 🎤 No voice-based mock interview simulation
- 🏗️ No system design canvas or architecture tools
- 💰 Paid tools that lock features behind paywalls
- 🧠 No AI — just blind memorization

✅ InterviewForge AI

+ 🧠 AI-generated questions tailored to YOUR role & domain
+ 📊 Multi-dimensional scoring (technical, clarity, depth)
+ 📈 Historical performance analytics & trend tracking
+ 🎯 Weakness-to-strength detection pipeline
+ 🗺️ AI-powered personalized career roadmap
+ 📄 ATS resume intelligence with skill-gap analysis
+ 🏢 FAANG company-targeted prep (Google, Meta, Amazon...)
+ 💻 500+ LeetCode problems with live code sandbox (4 languages)
+ 🎤 Voice AI mock interview with confidence metrics
+ 🏗️ Interactive System Design Canvas with AI review
+ 💎 100% FREE — EVERY feature unlocked for ALL users
+ 🤖 Powered by Google Gemini 2.5 Flash AI


✨ Features at a Glance

╔═══════════════════╦═══════════════════╦═══════════════════╦═══════════════════╗
║   🔐 Secure       ║   🎙️ Interview    ║   🧠 AI Engine    ║   📄 Resume       ║
║   Auth System     ║   Simulator       ║   (Gemini 2.5)    ║   Intelligence    ║
╠═══════════════════╬═══════════════════╬═══════════════════╬═══════════════════╣
║   💻 LeetCode     ║   🎤 Voice AI     ║   🏗️ System       ║   🗺️ Career      ║
║   500+ Problems   ║   Mock Interview  ║   Design Canvas   ║   Roadmap         ║
╠═══════════════════╬═══════════════════╬═══════════════════╬═══════════════════╣
║   📊 Dashboard    ║   📜 Session       ║   🏢 12 FAANG     ║   📈 Results &    ║
║   Analytics       ║   History         ║   Company Prep    ║   Score Tracking  ║
╠═══════════════════╬═══════════════════╬═══════════════════╬═══════════════════╣
║   👤 Profile      ║   ⚙️ Settings     ║   🔄 CI/CD        ║   💎 100% FREE    ║
║   Manager         ║   AI Config       ║   Pipelines       ║   No Paywalls     ║
╚═══════════════════╩═══════════════════╩═══════════════════╩═══════════════════╝

🔐 Authentication & Security

Production-grade auth with zero compromises

  • ✅ User registration with Zod + Jakarta Bean validation
  • ✅ Login with BCrypt password hashing (adaptive cost)
  • ✅ Stateless JWT token authentication (HMAC-SHA256)
  • ✅ Spring Security filter chain with custom filters
  • ✅ Protected API routes + frontend ProtectedRoute guards
  • ✅ Centralized auth state via Zustand (persisted)
  • ✅ Server-side Gemini API key protection
  • ✅ Hybrid BYOK (Bring Your Own Key) Gemini API support

🎙️ AI Interview Simulator

Realistic mock interviews across 30+ roles

  • 6 domain categories with 30+ target roles
  • Custom role input — type ANY job title
  • ✅ 6 interview types (Technical, Behavioral, Case Study, Stress & Ethics, System Design, Mixed)
  • ✅ 3 difficulty tiers (Easy → Medium → Hard)
  • ✅ Live interview workspace with progress tracking
  • ✅ Real-time question navigation & answer capture
  • ✅ Pre-session review & configuration dashboard

🧠 AI Evaluation Pipeline

Multi-dimensional answer analysis powered by Gemini

  • ✅ Real-time answer scoring (0–10 scale)
  • ✅ Strengths & weaknesses breakdown per answer
  • ✅ Improvement suggestions with actionable feedback
  • ✅ Technical correctness verification
  • ✅ Relevance, clarity & completeness detection
  • ✅ Communication quality assessment
  • ✅ Overall session score aggregation

📄 Resume Intelligence (ATS)

Transform your PDF into career insights

  • ✅ PDF upload & Apache PDFBox text extraction
  • ✅ AI-powered ATS compatibility scoring (0–100)
  • ✅ Technical skill identification & gap analysis
  • ✅ Experience analysis & strength evaluation
  • ✅ Missing skill detection for target role
  • ✅ Role compatibility scoring
  • ✅ Actionable improvement recommendations

💻 500+ LeetCode Coding Arena

Practice 500+ top LeetCode problems with live AI code sandbox

  • 500+ curated LeetCode problems across 18 categories
  • 4 language support — JavaScript, Python 3, Java 21, C++ 20
  • Real practice mode — clean method stubs (no prefilled solutions)
  • Live code execution with console output
  • Test case verification — output compared against expected results
  • Auto-solved marking — tick only on matching expected output
  • AI Code Audit — Big-O time & space complexity analysis
  • ✅ Category filter pills + search + pagination (25/page)

🎤 Voice AI Mock Interviewer

Real-time speech analysis with confidence scoring

  • Browser Web Speech API — live voice transcription
  • Live waveform visualization — animated audio meter
  • Speech Pace Gauge — Words Per Minute (WPM) tracking
  • Filler Word Counter — detects "um", "uh", "like", "you know"
  • Voice Confidence Score — 0–100% rating based on filler frequency + speech pacing
  • Real-time transcript display — live speech-to-text output
  • ✅ Integrated into live interview workspace

🏗️ System Design Canvas

Interactive architecture design workspace

  • Drag-and-drop architecture components — Load Balancers, Microservices, Databases, Caching, Message Queues
  • Visual system design builder — design architectures visually
  • AI Architecture Review — get AI feedback on your design
  • Integrated into live interview workspace — switch modes during interview
  • ✅ Multi-mode workspace: 📝 Text, 🎤 Voice AI, 💻 Code, 🏗️ Design

🗺️ AI Career Roadmap

Personalized learning timeline with task tracking

  • ✅ AI-generated weekly study plans
  • ✅ Interactive task checklist with progress tracking
  • ✅ Capstone project recommendations
  • ✅ Curated learning resources & links
  • ✅ Readiness score gauge
  • ✅ Estimated preparation duration
  • ✅ Reset & regenerate capability

📊 Dashboard & Analytics

Data-driven interview intelligence hub

  • ✅ Overall performance metrics dashboard
  • ✅ Average / best / lowest score tracking
  • ✅ Total interviews, questions & answers counters
  • ✅ Historical interview results timeline
  • ✅ Resume upload history
  • ✅ Quick-action navigation cards
  • ✅ Responsive glassmorphism UI with micro-animations

👤 Profile & Settings

Complete account management

  • ✅ Profile management — name, role, password updates
  • ✅ AI configuration settings (model, temperature)
  • ✅ Hybrid BYOK (Bring Your Own Key) Gemini API setup in Settings & Profile
  • ✅ Notification preferences
  • ✅ Danger zone — clear interview history, delete resumes
  • ✅ All features unlocked for all users
  • ✅ Clean, premium-feeling interface

🌍 Supported Career Domains & Roles

Domain Available Roles
💻 Tech & CS Full Stack Developer · Backend Developer · Frontend Developer · Software Engineer · DevOps Engineer · Data Scientist · Cybersecurity Analyst
💼 Business Product Manager · Project Manager · Business Analyst · Management Consultant
🧠 Psychology & HR Clinical Psychologist · HR Manager · UX Researcher · Career Counselor
🏥 Healthcare & Science Medical Doctor · Registered Nurse · Physiotherapist · Research Scientist
💰 Finance & Marketing Financial Analyst · Marketing Manager · Accountant · Sales Representative
📚 Education & Writing Teacher · Content Writer · Social Worker
✏️ Custom / Other Type any role you want — Chef, Pilot, Civil Engineer, Architect, etc.

🎭 Interview Types

Type Focus Area
🔬 Technical / Domain-Specific Core knowledge, tools, concepts, technical problem-solving
🎭 Behavioral / Situational STAR responses, leadership, teamwork, conflict resolution
📋 Case Study & Analysis Real-world scenario analysis, structured thinking
Stress & Ethical Scenario Pressure handling, ethical decision-making
🏗️ System & Process Design Architecture, workflow design, scalability thinking
🔀 Mixed / Comprehensive Balanced blend of all interview styles

💻 LeetCode Arena — 18 Problem Categories

# Category Problem Count Difficulty Mix
1 📦 Arrays & Hashing 30+ Easy · Medium · Hard
2 👆 Two Pointers 25+ Easy · Medium · Hard
3 🪟 Sliding Window 16+ Easy · Medium · Hard
4 📚 Stack 18+ Easy · Medium · Hard
5 🔍 Binary Search 15+ Easy · Medium · Hard
6 🔗 Linked List 20+ Easy · Medium · Hard
7 🌳 Trees 17+ Easy · Medium · Hard
8 🔤 Tries 11+ Medium · Hard
9 ⛰️ Heap / Priority Queue 11+ Easy · Medium · Hard
10 🔙 Backtracking 14+ Medium · Hard
11 🕸️ Graphs 14+ Medium · Hard
12 📈 1D Dynamic Programming 13+ Easy · Medium · Hard
13 📊 2D Dynamic Programming 12+ Medium · Hard
14 🤑 Greedy 10+ Easy · Medium · Hard
15 🔢 Bit Manipulation 10+ Easy · Medium
16 📐 Math & Geometry 11+ Easy · Medium · Hard
17 🏗️ System Design 11+ Medium · Hard


🎤 Voice AI Mock Interviewer

Real-time speech analysis — practice answering questions out loud with AI analyzing your delivery, detecting filler words, and scoring your confidence.

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ff6b6b', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["🎤 Start Recording\nWeb Speech API"] --> B["📡 Live Transcription\nReal-time STT"]
    B --> C["📊 Speech Analytics\nWPM · Fillers"]
    C --> D["🌟 Confidence Score\n0-100% Rating"]
    D --> E["📋 Full Transcript\n+ Metrics Report"]

    style A fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style B fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style C fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style D fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style E fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading

Voice AI Metrics

Metric What It Measures How It Helps
Words Per Minute (WPM) Speech pace & delivery speed Ideal range: 120-160 WPM for interviews
⚠️ Filler Word Counter "um", "uh", "like", "you know", "basically" Identifies nervous verbal habits
🌟 Voice Confidence Score Combined score from pace + filler frequency 0-100% overall confidence rating
📊 Live Waveform Audio amplitude visualization Visual feedback during recording

💻 500+ LeetCode Coding Arena

Practice 500+ top LeetCode problems in a premium coding workspace with live code execution, test case validation, and AI complexity analysis — just like the real thing, but with AI coaching.

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ffd93d', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["📋 Browse 500+\nProblems"] --> B["🏷️ Filter by\nTopic · Difficulty"]
    B --> C["💻 Open Problem\nClean Practice Stub"]
    C --> D["✍️ Write Solution\nJS · Python · Java · C++"]
    D --> E["▶️ Run Code\nLive Execution"]
    E --> F{"✓ Output Matches\nExpected?"}
    F -->|"✅ Yes"| G["🏆 ACCEPTED\nMarked Solved"]
    F -->|"❌ No"| H["✗ WRONG ANSWER\nTry Again"]
    G --> I["🧠 AI Code Audit\nO(N) Complexity"]

    style A fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style C fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style E fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style H fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style I fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading

Coding Arena Features

+ 💻 500+ hand-curated top LeetCode problems across 18 DSA categories
+ 🏷️ Topic filter pills — instantly filter by Arrays, Trees, DP, Graphs, etc.
+ 🔍 Live search — find any problem by name, number, or keyword
+ 📄 Pagination — 25 problems per page with clean navigation
+ ✍️ Clean practice stubs — no prefilled solutions (real practice mode!)
+ ▶️ Live code execution — actual output in console panel
+ ✅ Test case verification — output compared against expected results
+ 🏆 Auto-solved marking — green tick ONLY when output matches expected
+ 🧠 AI Code Audit — Big-O time & space complexity analysis
+ 🌐 4 Languages — JavaScript (Node.js), Python 3, Java 21, C++ 20


🏢 Company-Targeted Interview Prep

Company-Targeted Mock Interview Preparation — AI-generated interview questions tailored to the specific hiring bar, technical standards, cultural values, and interview loop style of top-tier companies. 100% FREE for all users.

┌──────────────────────────────────────────────────────────────────────┐
│                  🏢  SUPPORTED COMPANIES — ALL FREE                  │
│                                                                      │
│   🚀 General    G  Google     AM Amazon     M  Meta                  │
│   MS Microsoft  🍎 Apple      N  Netflix    S  Stripe                │
│   U  Uber       Z  Zoho       T  TCS        I  Infosys              │
│                                                                      │
│   🎉 ALL COMPANIES UNLOCKED FOR FREE  ·  No paywall. No limits.     │
└──────────────────────────────────────────────────────────────────────┘

How It Works

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#10b981', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["👤 User Selects\nGoogle"] --> B["🏢 Company Context\nInjected"]
    B --> C["🧠 Gemini Prompt\n+ Hiring Bar\n+ Culture Values\n+ Loop Style"]
    C --> D["🎙️ Company-Tailored\nInterview Session"]
    D --> E["📊 AI Evaluation\nCompany Standards"]
    E --> F["📈 Performance\nReport"]

    style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style B fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style C fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style D fill:#0f172a,stroke:#10b981,stroke-width:2px,color:#10b981
    style E fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style F fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading

What's Included — ALL FREE

+ ✅ AI Interview Simulator — 30+ roles, 6 types, 3 difficulties
+ ✅ Voice AI Mock Interview — real-time speech analysis + confidence scoring
+ ✅ 500+ LeetCode Coding Arena — 4 languages, live execution, AI code audit
+ ✅ System Design Canvas — drag-and-drop architecture builder + AI review
+ ✅ Resume ATS Intelligence — PDF upload, 0-100 scoring, skill gap analysis
+ ✅ Career Roadmap Generator — weekly plans, task tracking, readiness score
+ ✅ Dashboard Analytics — performance trends, score history, interview stats
+ ✅ 12 Company-Targeted Prep — Google, Meta, Amazon, Apple, Netflix + more
+ ✅ Multi-dimensional AI Scoring — technical, clarity, depth, communication
+ ✅ Interview History & Tracking — full session archive with replay
+ ✅ No signup fees · No paywalls · No premium tier · No limits


🏗️ System Architecture

High-Level Overview

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'secondaryColor': '#0f172a', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart TD
    subgraph CLIENT["🖥️ CLIENT TIER — Next.js 16 + React 19"]
        U["👤 User"] --> FE["⚡ App Router + Turbopack"]
        FE --> AUTH_UI["🔐 Auth Pages\nLogin · Register"]
        FE --> DASH_UI["📊 Dashboard\nAnalytics Hub"]
        FE --> INT_UI["🎙️ Interview Engine\nCompany Selector"]
        FE --> RES_UI["📄 Resume Workspace\nPDF Upload + ATS"]
        FE --> ROAD_UI["🗺️ Roadmap Builder\nWeekly Plans"]
        FE --> CODE_UI["💻 LeetCode Arena\n500+ Problems"]
        FE --> VOICE_UI["🎤 Voice AI\nSpeech Analysis"]
        FE --> DESIGN_UI["🏗️ System Design\nArchitecture Canvas"]
        FE --> HIST_UI["📜 History · Profile · Settings"]
    end

    subgraph API["🛡️ API TIER — Spring Boot 3 + Java 23"]
        GW["🌐 REST Controllers\n14 Route Modules"] --> SEC["🔒 Spring Security\nJWT Filter Chain"]
        SEC --> AUTH_SVC["🔐 Auth"]
        SEC --> INT_SVC["🎙️ Interview"]
        SEC --> SESSION_SVC["📋 Session"]
        SEC --> Q_SVC["❓ Question"]
        SEC --> ANS_SVC["💬 Answer"]
        SEC --> AI_SVC["🧠 AI Orchestration"]
        SEC --> RES_SVC["📄 Resume"]
        SEC --> ROAD_SVC["🗺️ Roadmap"]
        SEC --> DASH_SVC["📊 Dashboard"]
        SEC --> PROF_SVC["👤 Profile"]
        SEC --> RESULT_SVC["📈 Result"]
    end

    subgraph AI_TIER["🧠 AI TIER — Google Gemini"]
        AI_SVC --> PROMPT["📝 Context-Aware\nPrompt Builder\n+ Company Context"]
        PROMPT --> GEMINI["✨ Gemini 2.5 Flash\nAPI"]
        GEMINI --> PARSE["✅ Response Validator\n+ JSON Parser"]
    end

    subgraph DATA["🗄️ DATA TIER"]
        DB[("🐘 PostgreSQL\n10+ Tables")]
        PDF["📑 Apache PDFBox\nPDF Parser"]
    end

    AUTH_UI --> GW
    DASH_UI --> GW
    INT_UI --> GW
    RES_UI --> GW
    ROAD_UI --> GW
    HIST_UI --> GW

    AUTH_SVC --> DB
    INT_SVC --> DB
    SESSION_SVC --> DB
    Q_SVC --> DB
    ANS_SVC --> DB
    RES_SVC --> DB
    RES_SVC --> PDF
    RESULT_SVC --> DB
    PROF_SVC --> DB

    style CLIENT fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style API fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style AI_TIER fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style DATA fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
Loading


🔄 Core Product Flow

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["🔐 Register\nLogin"] --> B["📊 Dashboard"]
    B --> C["⚙️ Configure\nRole · Type\nDifficulty"]
    C --> C2["🏢 Select\nCompany\n(FREE)"]
    C2 --> D["🎙️ Live Interview\nAI Questions"]
    D --> D2["🎤 Voice AI\nOR Text"]
    D2 --> E["🧠 AI Evaluation\nScoring per Answer"]
    E --> F["📈 Performance\nReport"]
    F --> G["🗺️ Career\nRoadmap"]
    G --> B
    B --> H["📄 Resume\nATS Analysis"]
    B --> I["💻 LeetCode\n500+ Problems"]

    style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style B fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style C fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style C2 fill:#0f172a,stroke:#10b981,stroke-width:2px,color:#10b981
    style D fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style D2 fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style E fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style F fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style H fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style I fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
Loading

📦 Component Architecture Map

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart TD
    subgraph PAGES["📄 App Router Pages"]
        LP["🏠 Landing"] 
        AUTH["🔐 Auth\nLogin · Register"]
        DASH["📊 Dashboard"]
        INT["🎙️ Interview Setup"]
        LIVE["🎬 Live Session"]
        RES["📈 Result"]
        RESUME["📄 Resume"]
        ROAD["🗺️ Roadmap"]
        CODE["💻 Coding Arena"]
        PROF["👤 Profile"]
        SET["⚙️ Settings"]
        HIST["📜 History"]
    end

    subgraph COMPONENTS["🧩 Feature Components"]
        RS["RoleSelector\n30+ roles"]
        ITS["InterviewTypeSelector\n6 types"]
        DS["DifficultySelector\n3 tiers"]
        CKS["CompanyKitSelector\n12 companies"]
        VR["VoiceRecorder\nSpeech-to-Text"]
        CS["CodeSandbox\n4 languages"]
        SDC["SystemDesignCanvas\nArchitecture"]
    end

    subgraph STORES["🗃️ State Management"]
        ZA["Zustand Auth Store\nJWT · User State"]
        ZI["Zustand Interview Store\nSession state"]
    end

    INT --> RS & ITS & DS & CKS
    LIVE --> VR & CS & SDC
    CODE --> CS
    AUTH --> ZA
    INT --> ZI

    style PAGES fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style COMPONENTS fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style STORES fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading

🗄️ Database Entity-Relationship Diagram

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

erDiagram
    USERS {
        uuid id PK
        string full_name
        string email UK
        string password_hash
        string role
        string target_role
        boolean is_premium
    }

    INTERVIEWS {
        long id PK
        string title
        string role
        string difficulty
        string company
        datetime created_at
        uuid user_id FK
    }

    INTERVIEW_SESSIONS {
        long id PK
        datetime started_at
        datetime ended_at
        string status
        double score
        uuid user_id FK
        long interview_id FK
    }

    QUESTIONS {
        long id PK
        string question_text
        string answer
        string category
        string difficulty
        datetime created_at
        long interview_id FK
    }

    ANSWERS {
        long id PK
        string answer_text
        integer score
        string evaluation
        long session_id FK
        long question_id FK
    }

    RESUMES {
        long id PK
        string file_name
        string extracted_text
        string analysis
        integer ats_score
        datetime created_at
        uuid user_id FK
    }

    COMPANY_READINESS {
        long id PK
        string company
        integer readiness_score
        string missing_skills
        string recommendation
        datetime created_at
        uuid user_id FK
    }

    INTERVIEW_RESULTS {
        long id PK
        double overall_score
        string summary
        long session_id FK
    }

    USERS ||--o{ INTERVIEWS : creates
    USERS ||--o{ INTERVIEW_SESSIONS : participates
    USERS ||--o{ RESUMES : uploads
    USERS ||--o{ COMPANY_READINESS : evaluates
    INTERVIEWS ||--o{ QUESTIONS : contains
    INTERVIEWS ||--o{ INTERVIEW_SESSIONS : hosts
    INTERVIEW_SESSIONS ||--o{ ANSWERS : records
    INTERVIEW_SESSIONS ||--|| INTERVIEW_RESULTS : produces
    QUESTIONS ||--o{ ANSWERS : answered_by
Loading


🧠 AI Pipeline Deep Dive

Question Generation Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ff6b6b', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart TD
    A["📥 Interview Config\nRole + Type + Difficulty + Company"] --> B["🔍 Interview Type\nResolver"]
    B --> C{"🏢 Company\nProvided?"}
    C -->|"Yes"| D["📝 Inject Company Context\nHiring bar · Culture · Loop style"]
    C -->|"No"| E["📝 General Prompt\nRole-aware questions"]
    D --> F["🧠 Gemini 2.5 Flash\nJSON Generation"]
    E --> F
    F --> G["🧹 Response Cleaner\nStrip markdown · Trim"]
    G --> H{"✅ Valid\nJSON?"}
    H -->|"Yes"| I["📦 Deserialize\nQuestion Array"]
    H -->|"No"| J["🔴 RuntimeException\nInvalid response"]
    I --> K["💾 Persist to DB\nQuestionRepository.saveAll"]
    K --> L["📤 Return to Client\nTyped Question List"]

    style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style F fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style D fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style L fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading

Answer Evaluation Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#64ffda', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["💬 User Answer\nText or Voice"] --> B["📝 Build Eval Prompt\nQuestion + Answer + Role Context"]
    B --> C["🧠 Gemini 2.5\nMulti-Dimensional Scoring"]
    C --> D["📊 Parse Score\n0-10 Scale"]
    D --> E["📋 Extract Breakdown\nStrengths · Weaknesses · Suggestions"]
    E --> F["💾 Persist\nAnswer + Evaluation"]
    F --> G["📤 Real-time\nFeedback to UI"]

    style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style C fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading

Resume Analysis Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#7b2ff7', 'lineColor': '#00d2ff', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["📄 PDF Upload\nMultipart Form"] --> B["📑 PDFBox\nText Extraction"]
    B --> C["🧠 Gemini AI\nATS Analysis Prompt"]
    C --> D["📊 ATS Score\n0-100"]
    D --> E["🔍 Skill Gap\nDetection"]
    E --> F["📝 Improvement\nRecommendations"]
    F --> G["💾 Persist\nResume + Analysis"]

    style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style C fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading

LeetCode Code Execution Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ffd93d', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    A["✍️ User Writes Code\nJS · Python · Java · C++"] --> B["▶️ Run Code\nClient-side Execution"]
    B --> C["📤 Capture Output\nconsole.log / print"]
    C --> D{"🔍 Compare Output\nvs Expected"}
    D -->|"Match"| E["✅ ACCEPTED\nauto-mark solved"]
    D -->|"Mismatch"| F["❌ WRONG ANSWER\nshow diff"]
    E --> G["🧠 AI Code Audit\nTime · Space Complexity"]

    style A fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style B fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style E fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
    style F fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
    style G fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading

🔍 Full Request Lifecycle — Sequence Diagram (click to expand)
%%{init: {'theme': 'dark', 'themeVariables': { 'actorBkg': '#0f172a', 'actorBorder': '#00d2ff', 'actorTextColor': '#e2e8f0', 'signalColor': '#7b2ff7', 'signalTextColor': '#e2e8f0', 'noteBkgColor': '#1e293b', 'noteTextColor': '#e2e8f0', 'noteBorderColor': '#00d2ff', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

sequenceDiagram
    participant C as 👤 Candidate
    participant F as ⚡ Next.js Frontend
    participant A as 🛡️ Spring Boot API
    participant S as 🔒 Security Layer
    participant P as 📝 Prompt Builder
    participant G as ✨ Gemini AI
    participant V as ✅ JSON Validator
    participant D as 🗄️ PostgreSQL

    C->>F: Submit credentials
    F->>A: POST /api/v1/auth/login
    A->>D: Lookup user by email
    D-->>A: User record
    A->>A: BCrypt password verification ✅
    A->>S: Generate signed JWT 🔑
    S-->>A: Token
    A-->>F: { token, user }
    F->>F: Store in Zustand + redirect

    Note over C,D: ── Company-Targeted Interview Flow (FREE) ──

    C->>F: Select Google + Configure interview
    F->>A: POST /api/v1/interviews (JWT + company=Google)
    A->>S: Validate JWT
    A->>D: Create interview (with company field)
    A-->>F: { interviewId }

    F->>A: POST /api/v1/sessions/start
    A->>D: Create session
    A-->>F: { sessionId }

    F->>A: GET /api/v1/sessions/{id}/questions
    A->>P: Build role-aware prompt + company context
    P->>G: Generate company-tailored questions (JSON)
    G-->>V: Raw AI response
    V->>V: Parse + validate structure
    V->>D: Persist questions
    D-->>A: Confirmed
    A-->>F: Question[] (typed response)

    C->>F: Submit answer (text or voice transcript)
    F->>A: POST /api/v1/answers/submit
    A->>P: Build evaluation prompt
    P->>G: Evaluate answer (multi-dimensional)
    G-->>V: Scoring response
    V->>D: Persist evaluation
    A-->>F: { score, strengths, weaknesses, suggestions }
Loading


🔄 CI/CD Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#64ffda', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    subgraph TRIGGER["⚡ Trigger"]
        A["📤 Push to main\nor PR opened"]
    end

    subgraph FRONTEND_CI["🖥️ Frontend CI"]
        B["📥 Checkout"] --> C["📦 Node.js 20\nnpm ci"]
        C --> D["🔨 npm run build"]
    end

    subgraph BACKEND_CI["⚙️ Backend CI"]
        E["📥 Checkout"] --> F["☕ JDK 23\nTemurin"]
        F --> G["🔨 mvn package\n-DskipTests"]
    end

    A --> B
    A --> E

    D --> H["✅ Frontend\nPassed"]
    G --> I["✅ Backend\nPassed"]

    style TRIGGER fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style FRONTEND_CI fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style BACKEND_CI fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading

Workflows:

Pipeline File Trigger Steps
🖥️ Frontend CI .github/workflows/frontend-ci.yml Push/PR to main Checkout → Node 20 → npm cinpm run build
⚙️ Backend CI .github/workflows/backend-ci.yml Push/PR to main Checkout → JDK 23 → Maven cache → mvn package -DskipTests


🛠️ Tech Stack

Tech Stack
🖥️ Frontend
Technology Role Version
Next.js App Router framework + Turbopack 16
React Component architecture 19
TypeScript End-to-end type safety 5
Tailwind CSS Utility-first responsive styling latest
🐻 Zustand Lightweight client state management (persisted) latest
📡 Axios Typed HTTP client with JWT interceptors latest
Radix UI Accessible primitive components (Dialog, Tabs, etc.) latest
🎬 Framer Motion Smooth animations & micro-interactions latest
🔔 Sonner Toast notification system latest
Lucide React Beautiful icon library latest
📝 Zod Runtime schema validation latest
📋 React Hook Form Performant form management latest
🎤 Web Speech API Browser-native voice recognition for Voice AI native
⚙️ Backend
Technology Role Version
Java Core language 23
Spring Boot REST API framework 3.x
🛡️ Spring Security Authentication & authorization
🔑 JWT (JJWT) Stateless token authentication
🔐 BCrypt Adaptive password hashing
Hibernate/JPA ORM & database abstraction
Maven Dependency management & build
📄 SpringDoc OpenAPI Auto-generated Swagger docs
🏗️ Lombok Boilerplate reduction
✈️ Flyway Database migrations
🗄️ Data & AI
Technology Role
PostgreSQL Primary relational database (10+ tables)
Google Gemini 2.5 Flash AI question generation, answer evaluation, resume analysis, roadmap generation, company-targeted prep, code complexity audit
📑 Apache PDFBox PDF text extraction for resume analysis
Docker Containerization
GitHub Actions CI/CD pipelines (Frontend + Backend)


📁 Project Structure

🖥️ Frontend — Feature-Sliced Architecture (click to expand)
frontend/
├── 📂 app/                          # Next.js App Router
│   ├── 🏠 page.tsx                  # Landing page (public)
│   ├── 🎨 globals.css               # Global styles
│   ├── 📐 layout.tsx                # Root layout
│   │
│   ├── 🔐 auth/
│   │   ├── login/page.tsx           # Login page (Zod validated)
│   │   └── register/page.tsx        # Registration page
│   │
│   ├── 📊 (protected)/              # Auth-guarded layout group
│   │   ├── layout.tsx               # Sidebar + header layout
│   │   ├── dashboard/page.tsx       # Analytics dashboard
│   │   ├── history/page.tsx         # Interview history
│   │   ├── profile/page.tsx         # Profile management
│   │   └── settings/page.tsx        # AI config, danger zone
│   │
│   ├── 🎙️ interview/
│   │   ├── page.tsx                 # Interview setup (role/type/difficulty/company)
│   │   └── session/[sessionId]/
│   │       ├── page.tsx             # Pre-session review
│   │       ├── live/page.tsx        # Live interview workspace (Text + Voice + Code + Design)
│   │       └── result/page.tsx      # Performance report
│   │
│   ├── 💻 coding/page.tsx           # LeetCode 500+ Coding Arena
│   ├── 📄 resume/page.tsx           # Resume upload & ATS analysis
│   └── 🗺️ roadmap/page.tsx         # AI career roadmap builder
│
├── 📂 features/                     # Feature-sliced modules
│   ├── 🔐 auth/                     # Auth hooks, API, store, types
│   ├── 💻 coding/                   # 500+ LeetCode problems data, types
│   │   └── data/
│   │       └── problems.data.ts     # 500+ curated problems across 18 categories
│   ├── 📊 dashboard/                # Dashboard API, hooks, types
│   ├── 📜 history/                  # History API, components, types
│   ├── 🎙️ interview/               # Interview API, components, schemas, store, types
│   │   └── components/
│   │       ├── InterviewSetupForm   # Company selector + config
│   │       ├── CodeSandbox          # Multi-language code sandbox (JS, Python, Java, C++)
│   │       ├── VoiceRecorder        # Voice AI with speech-to-text + confidence
│   │       └── SystemDesignCanvas   # Architecture design canvas
│   ├── 👤 profile/                  # Profile form, hooks, API, types
│   ├── 📈 result/                   # Result API, components, types
│   ├── 📄 resume/                   # Resume API, hooks, types
│   ├── 🗺️ roadmap/                 # Roadmap API, components, types
│   └── ⚙️ settings/                # Settings form, hooks, types
│
├── 📂 shared/                       # Shared/reusable code
│   ├── components/                  # Auth guards, sidebar, header, UI primitives
│   ├── store/                       # Global Zustand stores (auth.store, app.store)
│   └── utilities/                   # Helper functions
│
└── 📂 lib/
    └── api/client.ts                # Axios instance with JWT interceptor
⚙️ Backend — Domain-Driven Architecture (click to expand)
backend/src/main/java/com/interviewforge/
│
├── 🚀 BackendApplication.java       # Spring Boot entry point
│
├── 🔐 auth/                         # Authentication domain
│   ├── controller/                  # AuthController (login, register)
│   ├── dto/                         # LoginRequest, RegisterRequest, AuthResponse
│   ├── entity/                      # User (UUID id, targetRole)
│   ├── repository/                  # UserRepository
│   └── service/                     # AuthService (BCrypt, JWT generation)
│
├── 🛡️ security/                     # Security configuration
│   ├── SecurityConfig.java          # Filter chain, CORS, route rules
│   ├── JwtAuthenticationFilter.java # Token extraction + validation
│   └── JwtTokenProvider.java        # JWT sign/verify utilities
│
├── 🎙️ interview/                    # Interview domain
│   ├── controller/                  # InterviewController
│   ├── dto/                         # CreateInterviewRequest (+company field)
│   ├── entity/                      # Interview (title, role, difficulty, company)
│   ├── repository/                  # InterviewRepository
│   └── service/                     # InterviewService
│
├── 📋 session/                       # Session management domain
├── ❓ question/                      # Question domain
├── 💬 answer/                        # Answer domain (submit + AI evaluate)
│
├── 🧠 ai/                           # AI orchestration layer
│   ├── gemini/                      # GeminiService (API integration + mock handler)
│   └── service/                     # AIQuestionService (prompt builder + company context)
│
├── 📄 resume/                        # Resume intelligence domain (PDF + ATS)
├── 🗺️ roadmap/                      # Learning roadmap domain
├── 📈 result/                        # Interview result domain
├── 📊 dashboard/                     # Dashboard analytics
├── 📜 history/                       # Interview history domain
├── 📉 statistics/                    # Statistics aggregation
│
├── 👤 profile/                       # User profile domain
│   ├── controller/                  # ProfileController (GET, PUT, DELETE)
│   ├── dto/                         # ProfileUpdateRequest, UserProfileResponse
│   └── service/                     # ProfileService (+clearInterviews)
│
├── 💼 company/                       # Company readiness domain
├── 🎯 jobmatch/                      # Job matching domain
├── 📋 recommendation/                # AI recommendations
├── 📊 report/                        # Report generation
├── 🎭 mockinterview/                 # Mock interview utilities
│
├── ⚙️ config/                        # App configuration (CORS, RestTemplate)
├── 🔧 common/                        # Shared DTOs, ApiResponse, GlobalExceptionHandler
└── 🏥 health/                        # Health check endpoints


📡 API Cheatsheet

Base URL: http://localhost:8080/api/v1  ·  Swagger: http://localhost:8080/swagger-ui/index.html


🔐 Authentication
Method Endpoint Description Auth
POST /auth/register Create new user account
POST /auth/login Authenticate & receive JWT
// POST /auth/login → Response
{
  "success": true,
  "data": {
    "email": "jane@example.com",
    "role": "USER",
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "message": "Login successful"
  }
}
🎙️ Interviews & Sessions
Method Endpoint Description Auth
POST /interviews Create interview config (with optional company) 🔐
GET /interviews List user interviews 🔐
GET /interviews/{id} Get interview details 🔐
PUT /interviews/{id} Update interview 🔐
DELETE /interviews/{id} Delete interview 🔐
POST /sessions/start Start new session 🔐
GET /sessions/{sessionId} Get session state 🔐
GET /sessions/{sessionId}/questions Get AI-generated questions 🔐
💬 Answers & Evaluation
Method Endpoint Description Auth
POST /answers/submit Submit answer for AI evaluation 🔐
📄 Resume Intelligence
Method Endpoint Description Auth
POST /resume/upload Upload PDF resume 🔐
GET /resume Get user resume list 🔐
GET /resume/{id} Get resume analysis 🔐
🗺️ Career Roadmap
Method Endpoint Description Auth
POST /roadmap/generate Generate AI learning roadmap 🔐
👤 Profile
Method Endpoint Description Auth
GET /profile Get user profile 🔐
PUT /profile Update profile (name, role, password) 🔐
DELETE /profile/interviews Clear all interview history 🔐
DELETE /profile/resumes Clear all resume data 🔐
📊 Dashboard, History & Results
Method Endpoint Description Auth
GET /dashboard Get analytics overview 🔐
GET /history Get interview history 🔐
GET /results/{sessionId} Get session result 🔐

📦 Standard Response Envelope

{
  "success": true,
  "message": "Operation completed successfully",
  "data": { }
}


🚀 Quick Start

Prerequisites

Node.js 18+  ·  Java 17+  ·  Maven  ·  PostgreSQL  ·  Git

1️⃣ Clone & Configure

git clone https://github.com/Jawahar08/interviewforge-ai.git
cd interviewforge-ai

# Set environment variables
export DB_URL=jdbc:postgresql://localhost:5432/interviewforge
export DB_USERNAME=postgres
export DB_PASSWORD=your_password
export JWT_SECRET=your_secure_jwt_secret_at_least_32_chars
export GEMINI_API_KEY=your_gemini_api_key  # or "mock-dev-key" for local dev

2️⃣ Start Backend

cd backend
mvn clean compile
mvn spring-boot:run
# 🟢 API → http://localhost:8080
# 📄 Swagger → http://localhost:8080/swagger-ui/index.html

3️⃣ Start Frontend

cd frontend
npm install
npm run dev
# 🟢 App → http://localhost:3000

4️⃣ Docker (One Command)

docker-compose up -d --build
# 🟢 Frontend → http://localhost:3000
# 🟢 Backend  → http://localhost:8080
# 🟢 Database → localhost:5432

5️⃣ Validate

cd frontend && npx tsc --noEmit     # Frontend type-check
cd backend && mvn clean compile       # Backend compile check
Endpoint URL
🖥️ Dashboard localhost:3000
💻 LeetCode Arena localhost:3000/coding
⚙️ API localhost:8080/api/v1
📄 Swagger localhost:8080/swagger-ui/index.html

💡 Local Dev Tip: Set GEMINI_API_KEY=mock-dev-key to run the full platform locally without a real Gemini API key. The backend will serve realistic mock responses for all AI features.



🌐 Deployment

Free Deployment Architecture

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#10b981', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

flowchart LR
    subgraph FRONTEND["🖥️ Vercel (Free)"]
        V["Next.js 16\nAuto-deployed"]
    end

    subgraph BACKEND["⚙️ Render (Free)"]
        R["Spring Boot\nDocker Container"]
    end

    subgraph DATABASE["🗄️ Neon (Free)"]
        N["PostgreSQL\n0.5GB Storage"]
    end

    subgraph AI["🧠 Google AI"]
        G["Gemini 2.5 Flash\nFree Tier API"]
    end

    V -->|"REST API"| R
    R -->|"JDBC"| N
    R -->|"HTTP"| G

    style FRONTEND fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
    style BACKEND fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
    style DATABASE fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
    style AI fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
Loading
Service Provider Free Tier Config File
🖥️ Frontend Vercel Unlimited frontend/vercel.json
⚙️ Backend Render 750h/month render.yaml
🗄️ Database Neon 0.5GB
🧠 AI Google AI Free tier .env


🗺️ Development Roadmap

%%{init: {'theme': 'dark', 'themeVariables': { 'cScale0': '#00d2ff', 'cScale1': '#7b2ff7', 'cScale2': '#64ffda', 'cScale3': '#ff6b6b', 'cScale4': '#ffd93d', 'cScale5': '#00d2ff', 'cScale6': '#7b2ff7', 'cScale7': '#ff6b6b', 'cScale8': '#64ffda', 'cScale9': '#10b981', 'cScaleLabel0': '#0a0a1a', 'cScaleLabel1': '#0a0a1a', 'cScaleLabel2': '#0a0a1a', 'cScaleLabel3': '#0a0a1a', 'cScaleLabel4': '#0a0a1a', 'cScaleLabel5': '#0a0a1a', 'cScaleLabel6': '#0a0a1a', 'cScaleLabel7': '#0a0a1a', 'cScaleLabel8': '#0a0a1a', 'cScaleLabel9': '#0a0a1a', 'fontFamily': 'JetBrains Mono, monospace'}}}%%

timeline
    title InterviewForge AI — Development Timeline

    section Phase 1 ✅
        Platform Foundation : Repository + monorepo setup
                            : Next.js 16 frontend scaffolding
                            : Spring Boot backend scaffolding
                            : PostgreSQL integration
                            : CI/CD pipelines

    section Phase 2 ✅
        Authentication : User registration + validation
                       : Login with BCrypt + JWT
                       : Spring Security integration
                       : Protected routing + Zustand

    section Phase 3 ✅
        Interview Engine : Multi-domain role selector (30+ roles)
                         : 6 interview types + 3 difficulty tiers
                         : Session lifecycle management
                         : Live interview workspace

    section Phase 4 ✅
        AI Runtime : Gemini 2.5 Flash integration
                   : Context-aware prompt engineering
                   : Structured JSON output parsing
                   : Retry logic + error resilience

    section Phase 5 ✅
        Evaluation : Multi-dimensional answer scoring
                   : Session score aggregation
                   : Performance reports
                   : Interview history tracking

    section Phase 6 ✅
        Career Intelligence : Resume PDF upload + ATS scoring
                            : AI career roadmap generation
                            : Interactive weekly task checklist
                            : Dashboard analytics

    section Phase 7 ✅
        Company Prep : 12 company options (FAANG+)
                     : Company-aware AI prompt injection
                     : All companies FREE for everyone

    section Phase 8 ✅
        Voice AI + Coding Arena : Voice AI mock with Web Speech API
                                : Filler word detection + WPM gauge
                                : Voice confidence score (0-100%)
                                : 500+ LeetCode problems (18 categories)
                                : Code sandbox (JS, Python, Java, C++)
                                : Test case verification + auto-solved marking
                                : System Design Canvas + AI review

    section Phase 9 ✅
        100% Free Launch : All features unlocked for everyone
                         : No premium tiers or paywalls
                         : Free cloud deployment (Vercel + Render + Neon)
                         : Kaggle MCQ question bank import

    section Phase 10 🔵
        Scale + Community : Redis caching layer
                          : Rate limiting
                          : Community contributions
                          : Mobile-responsive optimization
                          : Additional language support
Loading

🔒 Security

✅ Implemented

  • 🔐 BCrypt password hashing (adaptive cost factor)
  • 🔑 JWT-based stateless authentication (HMAC-SHA256)
  • 🛡️ Spring Security filter chain (custom JwtAuthenticationFilter)
  • 🚪 Protected API routes + frontend ProtectedRoute guards
  • 🧠 Server-side AI API key protection
  • ✅ DTO validation (Jakarta Bean Validation + Zod)
  • 🚨 Centralized GlobalExceptionHandler
  • 🌐 CORS configuration with allowed origins

🔵 Planned

  • ⏱️ Rate limiting & request throttling
  • 🔄 API key rotation strategy
  • 📝 Security audit logging
  • 🛡️ OWASP compliance hardening
  • 🔒 Security headers (CSP, HSTS, etc.)
  • 🧪 Penetration testing
  • 📊 Anomaly detection

🤝 Contributing

Contribution Workflow (click to expand)
# 1. Fork & clone
git clone https://github.com/YOUR_USERNAME/interviewforge-ai.git

# 2. Create feature branch
git checkout -b feature/amazing-feature

# 3. Make changes & validate
cd frontend && npx tsc --noEmit    # Frontend type-check
cd backend && mvn clean compile     # Backend compile

# 4. Commit with conventional commits
git commit -m "feat: add amazing feature"

# 5. Push & open PR
git push origin feature/amazing-feature

🌿 Git Conventions

Prefix Usage
feat: New feature
fix: Bug fix
refactor: Code restructuring
docs: Documentation
test: Tests
chore: Maintenance
perf: Performance

📄 License

MIT — see LICENSE for details.



👨‍💻 Author

Jawahar Bharathi

Full Stack Developer · AI Enthusiast · SaaS Builder

Building production-grade applications across modern frontend systems,
Java backend engineering, secure APIs, AI integration, and scalable SaaS.


Back to Top



Practice · Analyze · Improve · Get Hired

About

AI-Powered Interview Preparation Platform built with Spring Boot, PostgreSQL, JWT Authentication, Resume Analysis, Performance Analytics, and Docker.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages