๐ฏ Live Demo โข ๐ Documentation โข ๐ Report Bug โข ๐ก Request Feature
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.
- ๐ค 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
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 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 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| 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 |
| 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 |
| 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 |
AI-powered cover letter creation tailored to job descriptions using Gemini & GPT-4 with customizable tone and multiple revisions.
One-click LinkedIn CV import - automatically extracts work experience, education, skills, and certifications into JobPrep format.
- 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
- Node.js 20+ - JavaScript runtime
- Prisma 6.17 - Type-safe ORM
- PostgreSQL - Primary database
- Better Auth 1.3 - Authentication with passkeys & 2FA
- 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
- LiveKit - WebRTC video/audio conferencing
- Socket.io - Real-time notifications
- Liveblocks - Collaborative features
- Appwrite - File storage & backend services
- Cloudinary - Image optimization & CDN
- Stripe - Payment processing & subscriptions
- Puppeteer - PDF generation
- pdf-lib - PDF manipulation
- mammoth - DOCX parsing
- Piston API - Multi-language code runner (15+ languages)
Node.js 20+
PostgreSQL 14+
npm or pnpm
Git# 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 devVisit http://localhost:3000 ๐
# 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"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+)
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
}- ๐ 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
- 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
- ๐ AI interview coaching with personalized tips
- ๐ Advanced analytics & skill gap analysis
- ๐ฎ Gamification & achievement system
- ๐ Multi-language support (i18n)
- ๐ฑ Mobile responsive improvements
- ๐ฅฝ 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
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-featurefeat:New featurefix:Bug fixdocs:Documentationrefactor:Code refactoringtest:Adding testschore:Maintenance
MIT License - see LICENSE for details.
Copyright (c) 2024-2025 Ali Ammari
Special thanks to:
- Next.js - The React Framework
- Vercel - Deployment & Hosting
- Prisma - Next-gen ORM
- shadcn/ui - Beautiful Components
- LiveKit - Real-time Video
- Better Auth - Modern Auth
- Google AI - Gemini API
- OpenAI - GPT Models
- Stripe - Payments
If you find JobPrep helpful:
- โญ Star the repository
- ๐ฆ Share on social media
- โ Buy me a coffee
Built with โค๏ธ by Ali Ammari
Helping job seekers land their dream jobs, one interview at a time ๐