Skip to content

๐Ÿš€ AI-powered interview preparation platform with mock interviews, CV builder, code challenges & more. Built with Next.js 15, TypeScript, Prisma & cutting-edge AI. Land your dream job!

Notifications You must be signed in to change notification settings

aliammari1/JobPrep

Repository files navigation

๐Ÿš€ JobPrep AI

Your AI-Powered Career Companion for Interview Success

Next.js TypeScript Prisma Tailwind License

React LiveKit Stripe Vercel

๐ŸŽฏ Live Demo โ€ข ๐Ÿ“š Documentation โ€ข ๐Ÿ› Report Bug โ€ข ๐Ÿ’ก Request Feature


โœจ Land Your Dream Job with AI-Powered Interview Preparation

JobPrep is a comprehensive, next-generation platform that combines cutting-edge AI technology with practical career tools to help you ace interviews, build stunning CVs, master coding challenges, and stand out in the competitive job market.


๐ŸŽฏ Key Highlights

  • ๐Ÿค– Multi-AI Intelligence - Powered by Google Gemini, OpenAI GPT-4, Claude & Ollama
  • ๐ŸŽฅ Real-Time Video Interviews - LiveKit-powered immersive practice with AI feedback
  • ๐Ÿ“„ Professional CV Builder - ATS-friendly templates with LinkedIn import
  • ๐Ÿ’ป Code Challenge Arena - Practice coding in 15+ languages with instant feedback
  • โœ๏ธ AI Cover Letters - Generate tailored cover letters in seconds
  • ๐ŸŽค Voice & Emotion Analysis - MediaPipe-powered body language insights
  • ๐Ÿ“Š Smart Analytics - Track progress, identify weak areas, improve systematically
  • ๐Ÿ” Secure & Modern - Passkey authentication, 2FA, enterprise-grade security

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         Frontend Layer                          โ”‚
โ”‚  Next.js 15 โ€ข React 19 โ€ข TypeScript โ€ข Tailwind CSS โ€ข shadcn/ui โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      API Routes Layer                           โ”‚
โ”‚     /api/ai โ€ข /api/interviews โ€ข /api/cv โ€ข /api/challenges      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    AI Services Layer                            โ”‚
โ”‚   Gemini โ€ข OpenAI โ€ข Claude โ€ข Ollama โ€ข HeyGen โ€ข MediaPipe       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Real-time Services                            โ”‚
โ”‚        LiveKit (Video) โ€ข Liveblocks โ€ข Socket.io                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Data & Storage Layer                         โ”‚
โ”‚   PostgreSQL (Prisma) โ€ข Appwrite โ€ข Cloudinary โ€ข Stripe         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŒŸ Features

๐ŸŽค AI Mock Interviews

Feature Description
Multi-AI Support Choose between Gemini, GPT-4, Claude, or local Ollama
Real-time Video LiveKit-powered HD video/audio with screen sharing
Smart Questions AI generates role-specific technical & behavioral questions
Instant Feedback Get detailed analysis of answers, tone, and body language
Voice Analysis Speech-to-text transcription with emotion detection
Recording Save interviews for review and improvement tracking
Scheduling Google Calendar integration for practice sessions

๐Ÿ“„ CV Builder

Feature Description
3 Templates Professional, modern, and creative ATS-optimized designs
LinkedIn Import Chrome extension auto-fills CV from LinkedIn profile
Smart Suggestions AI-powered improvements for bullet points and keywords
Multi-format Export PDF, DOCX, JSON with customizable styling
Version Control Save multiple versions, track changes over time
Real-time Preview Live updates as you type with mobile-responsive view

๐Ÿ’ป Code Challenges

Feature Description
15+ Languages Java, Python, JavaScript, C++, Go, Rust, and more
Difficulty Levels Easy, Medium, Hard with curated problem sets
Real-time Execution Piston API-powered instant code evaluation
Test Cases Run against multiple test cases with detailed feedback
Leaderboard Compete with others, track rankings and statistics
Time Tracking Practice under interview conditions with timers

โœ๏ธ Cover Letter Generator

AI-powered cover letter creation tailored to job descriptions using Gemini & GPT-4 with customizable tone and multiple revisions.

๐Ÿ”Œ Chrome Extension

One-click LinkedIn CV import - automatically extracts work experience, education, skills, and certifications into JobPrep format.


๐Ÿ› ๏ธ Technology Stack

Frontend

  • Next.js 15.5 - React framework with App Router & Server Components
  • React 19.1 - UI library with React Compiler
  • TypeScript 5 - Type safety
  • Tailwind CSS 4.0 - Utility-first styling
  • shadcn/ui - Beautiful accessible components
  • Framer Motion - Smooth animations

Backend

  • Node.js 20+ - JavaScript runtime
  • Prisma 6.17 - Type-safe ORM
  • PostgreSQL - Primary database
  • Better Auth 1.3 - Authentication with passkeys & 2FA

AI & ML

  • Google Gemini - Primary AI for interviews & CV analysis
  • OpenAI GPT-4 - Advanced reasoning & code evaluation
  • Anthropic Claude - Alternative AI provider
  • Ollama - Local AI models (optional)
  • HeyGen - AI avatar generation
  • MediaPipe - Body language & emotion analysis

Real-time & Media

  • LiveKit - WebRTC video/audio conferencing
  • Socket.io - Real-time notifications
  • Liveblocks - Collaborative features

Storage & Services

  • Appwrite - File storage & backend services
  • Cloudinary - Image optimization & CDN
  • Stripe - Payment processing & subscriptions

Document Processing

  • Puppeteer - PDF generation
  • pdf-lib - PDF manipulation
  • mammoth - DOCX parsing

Code Execution

  • Piston API - Multi-language code runner (15+ languages)

๐Ÿš€ Quick Start

Prerequisites

Node.js 20+
PostgreSQL 14+
npm or pnpm
Git

Installation

# Clone repository
git clone https://github.com/aliammari1/JobPrep.git
cd JobPrep

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your API keys

# Set up database
npx prisma generate
npx prisma db push

# Run development server
npm run dev

Visit http://localhost:3000 ๐ŸŽ‰

Environment Variables

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/jobprep"

# AI APIs
GOOGLE_GENERATIVE_AI_API_KEY="your_gemini_key"
OPENAI_API_KEY="your_openai_key"
ANTHROPIC_API_KEY="your_claude_key"

# Authentication
BETTER_AUTH_SECRET="your_secret_key"
BETTER_AUTH_URL="http://localhost:3000"

# LiveKit (Video)
LIVEKIT_API_KEY="your_livekit_key"
LIVEKIT_API_SECRET="your_livekit_secret"
LIVEKIT_URL="wss://your-project.livekit.cloud"

# Stripe Payments
STRIPE_SECRET_KEY="your_stripe_secret"
STRIPE_WEBHOOK_SECRET="your_webhook_secret"

# Storage
APPWRITE_ENDPOINT="your_appwrite_endpoint"
APPWRITE_PROJECT_ID="your_project_id"
CLOUDINARY_URL="cloudinary://key:secret@cloud_name"

# Email
SMTP_HOST="smtp.gmail.com"
SMTP_USER="your_email@gmail.com"
SMTP_PASS="your_app_password"

# Google Calendar
GOOGLE_CLIENT_ID="your_google_client_id"
GOOGLE_CLIENT_SECRET="your_google_client_secret"

๐Ÿ“ Project Structure

JobPrep/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                    # Next.js App Router
โ”‚   โ”‚   โ”œโ”€โ”€ (auth)/            # Auth pages (login, register)
โ”‚   โ”‚   โ”œโ”€โ”€ (dashboard)/       # Protected dashboard routes
โ”‚   โ”‚   โ”œโ”€โ”€ api/               # API routes (35+ endpoints)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ai/           # AI chat & processing
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ interviews/   # Mock interview endpoints
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ cv/           # CV builder & export
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ challenges/   # Code challenge submission
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ livekit/      # Video conferencing
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ stripe/       # Payment webhooks
โ”‚   โ”‚   โ””โ”€โ”€ layout.tsx        # Root layout
โ”‚   โ”œโ”€โ”€ components/            # React components (150+)
โ”‚   โ”‚   โ”œโ”€โ”€ ui/               # shadcn/ui components
โ”‚   โ”‚   โ”œโ”€โ”€ interviews/       # Interview-related components
โ”‚   โ”‚   โ”œโ”€โ”€ cv/               # CV builder components
โ”‚   โ”‚   โ””โ”€โ”€ challenges/       # Code editor components
โ”‚   โ”œโ”€โ”€ lib/                  # Utilities & helpers
โ”‚   โ”‚   โ”œโ”€โ”€ prisma.ts        # Database client
โ”‚   โ”‚   โ”œโ”€โ”€ auth.ts          # Auth configuration
โ”‚   โ”‚   โ””โ”€โ”€ ai/              # AI service integrations
โ”‚   โ””โ”€โ”€ styles/              # Global styles
โ”œโ”€โ”€ prisma/
โ”‚   โ””โ”€โ”€ schema.prisma        # Database schema (25+ models)
โ”œโ”€โ”€ chrome-extension/        # LinkedIn CV importer
โ”‚   โ”œโ”€โ”€ manifest.json
โ”‚   โ”œโ”€โ”€ content.js          # LinkedIn scraper
โ”‚   โ””โ”€โ”€ popup.html          # Extension UI
โ”œโ”€โ”€ public/                 # Static assets
โ””โ”€โ”€ package.json           # Dependencies (80+)

๐Ÿ’พ Database Schema

model User {
  id            String          @id @default(cuid())
  email         String          @unique
  name          String?
  image         String?
  interviews    Interview[]
  cvs           CV[]
  submissions   Submission[]
  subscription  Subscription?
  createdAt     DateTime        @default(now())
}

model Interview {
  id            String              @id @default(cuid())
  userId        String
  user          User                @relation(fields: [userId], references: [id])
  jobTitle      String
  jobDescription String
  difficulty    Difficulty
  aiProvider    AIProvider
  questions     Question[]
  responses     InterviewResponse[]
  recordingUrl  String?
  score         Float?
  feedback      String?
  status        InterviewStatus     @default(PENDING)
  scheduledAt   DateTime?
  completedAt   DateTime?
  createdAt     DateTime            @default(now())
}

model CV {
  id            String      @id @default(cuid())
  userId        String
  user          User        @relation(fields: [userId], references: [id])
  template      String
  personalInfo  Json
  experience    Json[]
  education     Json[]
  skills        Json[]
  certifications Json[]
  createdAt     DateTime    @default(now())
  updatedAt     DateTime    @updatedAt
}

model Challenge {
  id            String       @id @default(cuid())
  title         String
  description   String
  difficulty    Difficulty
  language      String
  testCases     Json[]
  submissions   Submission[]
  tags          String[]
  createdAt     DateTime     @default(now())
}

model Subscription {
  id            String   @id @default(cuid())
  userId        String   @unique
  user          User     @relation(fields: [userId], references: [id])
  plan          Plan
  status        String
  stripeId      String   @unique
  currentPeriodEnd DateTime
}

๐ŸŽจ Screenshots

๐Ÿ  Dashboard

Dashboard

๐ŸŽค AI Mock Interview

Interview

๐Ÿ“„ CV Builder

CV Builder

๐Ÿ’ป Code Challenges

Code Challenge


๐Ÿ” Security

  • ๐Ÿ”’ Modern Authentication - Better Auth with passkeys & 2FA
  • ๐Ÿ›ก๏ธ HTTPS Only - Automatic SSL via Vercel
  • ๐Ÿ”‘ API Key Encryption - AES-256 encrypted storage
  • ๐Ÿšซ Rate Limiting - DDoS & brute force protection
  • โœ… SQL Injection Safe - Prisma parameterized queries
  • ๐Ÿงน XSS Protection - React automatic HTML sanitization
  • ๐ŸŽซ CSRF Tokens - Built-in cross-site attack prevention
  • ๐Ÿ“‹ Security Headers - CSP, HSTS, X-Frame-Options

๐Ÿ—บ๏ธ Roadmap

โœ… Completed (v1.0)

  • AI-powered mock interviews with multi-provider support
  • Professional CV builder with 3 templates
  • Code challenge arena (15+ languages)
  • Chrome extension for LinkedIn import
  • Real-time video interviews (LiveKit)
  • Stripe payment integration
  • Dashboard & analytics

๐Ÿšง In Progress (v1.1 - Q1 2026)

  • ๐ŸŽ“ AI interview coaching with personalized tips
  • ๐Ÿ“Š Advanced analytics & skill gap analysis
  • ๐ŸŽฎ Gamification & achievement system
  • ๐ŸŒ Multi-language support (i18n)
  • ๐Ÿ“ฑ Mobile responsive improvements

๐Ÿ”ฎ Planned (v2.0 - Q2 2026)

  • ๐Ÿฅฝ VR Interview simulation
  • ๐Ÿ“ฑ iOS & Android mobile apps
  • ๐Ÿ‘ฅ Peer interview matching
  • ๐ŸŽ“ Interview coaching marketplace
  • ๐Ÿง  Emotion detection & personality analysis
  • ๐Ÿข Company-specific prep (FAANG, startups)
  • ๐Ÿค ATS integration & job application tracking

๐Ÿค Contributing

Contributions are welcome! See our Contributing Guide for details.

# Fork & clone
git clone https://github.com/YOUR_USERNAME/JobPrep.git

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

# Commit changes
git commit -m 'feat: add amazing feature'

# Push & create PR
git push origin feature/amazing-feature

Commit Convention

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation
  • refactor: Code refactoring
  • test: Adding tests
  • chore: Maintenance

๐Ÿ“„ License

MIT License - see LICENSE for details.

Copyright (c) 2024-2025 Ali Ammari


๐Ÿ‘จโ€๐Ÿ’ป Author

Ali Ammari

GitHub LinkedIn Twitter Website

Full-Stack Developer | AI Enthusiast | Open Source Contributor


๐Ÿ™ Acknowledgments

Special thanks to:


โญ Support

If you find JobPrep helpful:

  • โญ Star the repository
  • ๐Ÿฆ Share on social media
  • โ˜• Buy me a coffee

๐Ÿ“ˆ Star History

Star History Chart


Built with โค๏ธ by Ali Ammari

Helping job seekers land their dream jobs, one interview at a time ๐Ÿš€


About

๐Ÿš€ AI-powered interview preparation platform with mock interviews, CV builder, code challenges & more. Built with Next.js 15, TypeScript, Prisma & cutting-edge AI. Land your dream job!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •