A full-stack application designed to simulate real-world technical interviews. It allows users to practice answering conceptual and coding questions verbally and programmatically, receiving instant, AI-driven feedback on their performance.
-
Customizable Interviews: Select Role (MERN, Python, Data Science), Difficulty Level, and Interview Type (Oral vs. Coding Mix).
-
Hybrid Input System:
-
🎙️ Voice Response: Uses OpenAI Whisper to transcribe verbal answers for conceptual questions.
-
💻 Code Editor: Integrated Monaco Editor for solving coding challenges directly in the browser.
-
AI Microservice Architecture:
-
Question Generation: dynamically creates unique interview questions using Ollama (Mistral).
-
Smart Evaluation: Analyzes both code logic and verbal transcription to provide a Technical Score and Confidence Score.
-
Detailed Analytics:
-
Session history with global scores.
-
Per-question breakdown showing user submission vs. ideal implementation.
-
Performance charts using Chart.js.
-
Secure Authentication: JWT-based user login and registration.
- Framework: React (Vite)
- State Management: Redux Toolkit
- Styling: Tailwind CSS
- Editor:
@monaco-editor/react - Visualization: Chart.js / React-Chartjs-2
- Routing: React Router Dom
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB (Mongoose)
- Authentication: JSON Web Tokens (JWT) & bcryptjs
- Runtime: Python 3.9+
- Framework: FastAPI
- LLM Engine: Ollama (running
mistrallocally) - Speech-to-Text: OpenAI Whisper (
base.enmodel) - Audio Processing: PyDub / FFMPEG
AI_Interview_Web/
│
├── frontend/ # React + Vite application
│ ├── src/
│ ├── public/
│ └── package.json
│
├── backend/ # Node.js API Gateway
│ ├── controllers/
│ ├── routes/
│ ├── models/
│ └── server.js
│
├── ai-service/ # Python FastAPI AI microservice
│ ├── main.py
│ ├── services/
│ └── requirements.txt
│
└── README.md
- Node.js (v16+) and npm.
- Python (v3.9+) and pip.
- MongoDB: Local instance or Atlas URI.
- Ollama: Installed and running locally.
- Install from ollama.com.
- Pull the model:
ollama pull mistral.
- FFmpeg: Required for audio processing (should be in your system PATH).
git clone https://github.com/Shivank2005/AI_Interview_Web.git
cd AI_Interview_Web
cd backend
npm install
# Create a .env file
echo "PORT=5000" > .env
echo "MONGO_URI=your_mongodb_connection_string" >> .env
echo "JWT_SECRET=your_jwt_secret" >> .env
echo "NODE_ENV=development" >> .env
# Run the server
npm run server
cd ../ai_service
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install fastapi uvicorn ollama openai-whisper pydub python-dotenv
# Create a .env file
echo "AI_SERVICE_PORT=8000" > .env
echo "OLLAMA_MODEL_NAME=mistral" >> .env
# Run the microservice
uvicorn main:app --reload --port 8000
cd ../frontend
npm install
# Create a .env file
echo "VITE_API_URL=http://localhost:5000/api" > .env
# Run the frontend
npm run devThe application follows a microservices-inspired architecture to separate heavy AI processing from the main application logic.
- Client (React): Handles UI, Audio Recording, and Code Editing. Sends data to Node.js.
- Node.js Server: Acts as the API Gateway. Handles Auth, Database storage, and forwards AI tasks to the Python service.
- Python Service:
- Receives
POST /generate-questions. - Receives
POST /transcribe(Audio -> Text). - Receives
POST /evaluate(Text/Code -> Score/Feedback JSON).
- Ollama: The local LLM engine that powers the generation and evaluation logic.
Shivank
Computer Science Student – BIT Bengaluru
GitHub: https://github.com/Shivank2005