An end-to-end, multi-tier automated web platform designed to simulate realistic, adaptive technical interviews. The system captures live video and audio streams to perform real-time facial expression analysis, speech-to-text transcription, and natural language evaluation, providing detailed behavioral metrics and technical scoring breakdown graphs upon completion.
The software ecosystem operates on a decoupled, three-tier architecture ensuring clean isolation of concerns:
+-----------------------------------+
| Next.js Front-End | (Port 3000)
| React 19 / Tailwind CSS v4 |
+-----------------+-----------------+
|
REST / Audio | JSON Web Tokens
Video Blobs | (Auth Handshake)
v
+-----------------------------------+
| Node.js Express Server | (Port 5000)
| Authentication & Database |
+-----------------+-----------------+
|
Internal REST | Upstream Payload
Proxy Handlers | Forwarding
v
+-----------------------------------+
| FastAPI Backend | (Port 8000)
| PyTorch / OpenCV ML Inference |
+-----------------------------------+
Presentation Layer (
/client) Built on Next.js 16 and React 19, managing high-frequency webcam visual loops (react-webcam) and recording audio tracks (react-media-recorder). Analytical trends are mapped with Recharts.Orchestration Layer (
/server) A reliable Express gateway driving structural storage tasks via Mongoose, validating state transitions, issuing JWT profiles, and managing multipart data pipelines viamulter.Machine Learning Layer (
/backend) An asynchronous Python execution matrix fueled by FastAPI. It controls intensive CPU/GPU pipelines:- Text transcription (
faster-whisper) - Text processing embeddings (
sentence-transformers) - Visual computing (
OpenCV) - Automated text feedback evaluation (
language-tool-python)
- Text transcription (
├── backend/ # Python Asynchronous ML Pipeline
│ ├── app/
│ │ ├── knowledge_base/ # Curated technical prompt bases
│ │ ├── models/ # Pydantic schema validators
│ │ ├── modules/ # Core inferencing engines
│ │ │ ├── adaptive/
│ │ │ ├── evaluator/
│ │ │ ├── face_analysis/
│ │ │ ├── feedback/
│ │ │ ├── question_gen/
│ │ │ └── speech/
│ │ ├── routes/ # FastAPI routing paths
│ │ └── main.py # Python startup hub
│ └── requirements.txt
│
├── server/ # Node.js Express Session Tier
│ ├── src/
│ │ ├── config/
│ │ ├── middleware/
│ │ ├── models/
│ │ ├── routes/
│ │ └── index.js
│ └── package.json
│
└── client/ # Next.js Presentation App
├── src/
│ ├── app/
│ ├── components/
│ ├── context/
│ ├── hooks/
│ └── utils/
├── tailwind.config.js
└── package.json
Ensure your environment contains:
- Node.js:
v18.xor above - Python:
v3.10.xor higher - MongoDB: Local or cloud Atlas instance
cd backendpython -m venv venv
source venv/bin/activateWindows:
venv\Scripts\activatepip install -r requirements.txtpython -m spacy download en_core_web_smuvicorn app.main:app --host 127.0.0.1 --port 8000 --reloadcd ../servernpm installPORT=5000MONGO_URI=mongodb://127.0.0.1:27017/interview_coachJWT_SECRET=production_ready_cryptographic_randomized_hex_stringFASTAPI_URL=http://127.0.0.1:8000npm run devcd ../clientnpm installNEXT_PUBLIC_API_URL=http://127.0.0.1:5000npm run devOpen:
http://localhost:3000
| Variable | Purpose | Example |
|---|---|---|
PORT | Node server port | 5000 |
MONGO_URI | MongoDB connection string | mongodb://127.0.0.1:27017/db |
JWT_SECRET | JWT signing key | Secure random value |
FASTAPI_URL | ML backend endpoint | http://127.0.0.1:8000 |
| Variable | Purpose | Example |
|---|---|---|
NEXT_PUBLIC_API_URL | Express backend URL | http://127.0.0.1:5000 |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register | Register new user |
| POST | /api/auth/login | Authenticate user |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/session/start | Start interview session |
| POST | /api/questions/next | Generate next question |
| POST | /api/evaluate/answer | Evaluate response |
| GET | /api/report/:sessionId | Fetch interview report |
| Method | Endpoint | Description |
|---|---|---|
| POST | /face/analyze | Facial expression analysis |
| POST | /speech/transcribe | Audio transcription |
| POST | /resume/extract | Resume parsing |
Ensure you are running on:
http://localhost
Modern browsers block media permissions on insecure origins.
Verify:
MongoDB Connected...
appears in the Node.js console logs.
The FastAPI backend automatically falls back to CPU inference if CUDA-enabled GPU drivers are unavailable.
- Next.js 16
- React 19
- Tailwind CSS v4
- Recharts
- Axios
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT
- Multer
- FastAPI
- PyTorch
- OpenCV
- Faster-Whisper
- Sentence Transformers
- SpaCy
This project is intended for educational, research, and interview-preparation purposes.
Built as a scalable AI-assisted technical interview simulation platform using modern full-stack engineering and real-time machine learning inference pipelines.