An advanced, AI-powered interview preparation platform with real-time emotion detection that helps candidates practice and improve their interview skills through realistic, interactive simulations.
- AI Interviewer β Conducts realistic interviews with varying personas (Technical, Behavioral, System Design)
- Voice & Text Modes β Speak naturally with the AI or type your responses
- Integrated Code Editor β Monaco-based editor for technical/coding interviews
- Resume Analysis β Upload your resume for personalized questions and skill-based deep dives
- Flexible Duration β Choose interview length (5, 10, 15, or 30 minutes)
- Real-time Emotion Detection β Facial expression analysis using Hume AI throughout the interview
- Confidence Tracking β Monitors your confidence levels during responses
- Stress Detection β Identifies high-stress moments and tracks nervousness
- Emotion Trends β Analyzes if your emotional state improved or declined
- Comprehensive Reports β Detailed feedback with scoring after each session
- Emotional Analysis β See your confidence %, nervousness %, stress points, and dominant emotions
- Personalized Improvement Plan β AI-generated coaching covering:
- Technical skill gaps with learning resources
- Communication skill improvements
- Stress management & confidence building tips
- Prioritized action items with deadlines
- Secure Authentication β JWT-based auth with password hashing
- Resume Management β Upload, view, and manage multiple resumes
- Interview History β Track all past sessions and scores
- Custom API Keys β Optionally use your own API keys (stored locally in browser)
- Speech Provider Choice β Switch between ElevenLabs and Azure Speech
| Layer | Technologies |
|---|---|
| Frontend | React (Vite), TypeScript, TailwindCSS, Framer Motion |
| Backend | Node.js, Express, Prisma ORM |
| Database | PostgreSQL with PGVector (semantic search) |
| AI/ML | Google Gemini, ElevenLabs (STT/TTS), Hume AI (Emotion) |
| Auth | JWT, bcrypt |
- Node.js v18 or higher
- PostgreSQL database (local or cloud: Neon, Supabase, etc.)
- npm or yarn
git clone https://github.com/wiz-abhi/RealPrep-AI.git
cd RealPrep-AI# Client
cd client && npm install
# Server
cd ../server && npm install# Copy example files
cp server/.env.example server/.env
cp client/.env.example client/.env
# Edit the .env files with your API keyscd server
npx prisma generate
npx prisma db push# Terminal 1 - Server (http://localhost:3000)
cd server && npm run dev
# Terminal 2 - Client (http://localhost:5173)
cd client && npm run dev| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
β | PostgreSQL connection string |
JWT_SECRET |
β | Secret for JWT token signing |
GEMINI_API_KEY |
β | Google Gemini API key for AI chat |
HUME_API_KEY |
β | Hume AI API key for emotion detection |
HUME_SECRET_KEY |
β | Hume AI secret key |
PORT |
β | Server port (default: 3000) |
FRONTEND_URL |
β | Frontend URL for CORS (production) |
| Variable | Required | Description |
|---|---|---|
VITE_ELEVENLABS_API_KEY |
β | ElevenLabs API for STT/TTS |
VITE_AZURE_SPEECH_KEY |
β | Azure Speech API key (alternative) |
VITE_AZURE_SPEECH_REGION |
β | Azure region (e.g., eastus) |
VITE_DEFAULT_SPEECH_PROVIDER |
β | elevenlabs or azure |
VITE_HUME_API_KEY |
β | Hume AI key (client-side, optional) |
VITE_API_URL |
β | Backend URL (production only) |
π‘ See API_SETUP.md for detailed instructions on obtaining API keys.
- Import your GitHub repo to Vercel
- Set root directory to
client - Add environment variable:
VITE_API_URL=https://your-app.onrender.com
- Create a new Web Service from your GitHub repo
- Set root directory to
server - Build command:
npm install && npm run build - Start command:
npm run start - Add environment variables (all server vars above)
- Add:
FRONTEND_URL=https://your-app.vercel.app
realprep-ai/
βββ client/ # React Frontend
β βββ src/
β β βββ components/ # UI components (GlassCard, CodeEditor, ScannerOverlay)
β β βββ config/ # API configuration
β β βββ context/ # AuthContext
β β βββ hooks/ # useSpeech, useHumeVision, useAzureSpeech
β β βββ pages/ # Interview, Dashboard, Report, Settings pages
β βββ .env.example # Example environment variables
βββ server/ # Node.js Backend
β βββ src/
β β βββ controllers/ # Interview, Resume, Auth, User controllers
β β βββ middleware/ # Auth middleware
β β βββ routes/ # API routes
β β βββ services/ # Gemini, RAG services
β β βββ utils/ # Auth utilities
β βββ prisma/ # Database schema
β βββ .env.example # Example environment variables
βββ README.md
| Endpoint | Method | Description |
|---|---|---|
/api/auth/register |
POST | Create new account |
/api/auth/login |
POST | User login |
/api/resume/upload |
POST | Upload resume (PDF/TXT) |
/api/resume/list |
GET | List user's resumes |
/api/interview/start |
POST | Start new interview session |
/api/interview/chat |
POST | Send message + emotions to AI |
/api/interview/end |
POST | End session & generate report |
/api/interview/report/:id |
GET | Get session report |
/api/interview/improvement-plan |
POST | Generate coaching plan |
/api/interview/history |
GET | Get interview history |
/api/user/stats |
GET | Get user statistics |
- Glassmorphism Design β Modern frosted glass UI with blur effects
- Dark Mode β Sleek dark theme throughout
- Responsive Layout β Works on desktop and tablets
- Real-time Feedback β Live transcription, typing animations
- Floating Timer β Countdown timer during interviews
- JWT-based authentication with httpOnly consideration
- Passwords hashed with bcrypt
- User API keys stored only in browser localStorage (never sent to server)
- CORS configured for production origins
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Google Gemini for AI chat capabilities
- ElevenLabs for speech synthesis
- Hume AI for emotion detection
- Prisma for database ORM