A full-stack web application powered by the MERN stack and integrated with Gemini AI, designed to help users simulate and prepare for technical interviews. This tool generates a personalized list of potential interview questions and concise answers based on the position's experience requirements and the selected discussion topics.
🔒 Authentication is required to access the main features. Users can sign up or log in to start generating sessions.
- 🔐 Authentication — Register & login to access core features.
- 🧠 AI-powered Question Generation — Generate 10 technical interview questions and concise answers based on:
- Position
- Years of experience
- Topics of discussion
- Notes
- 📌 Pin Important Questions — Mark important questions and move them to the top.
- 📝 Add More Questions — Add more questions to the session.
- 📖 Detailed Explanation — View deeper explanations to better understand the context of each question.
- 🗂️ Session Management — Create, delete, and explore session details.
- 🐳 Docker support for quick deployment
| Layer | Stack |
|---|---|
| Frontend | React (Vite) + Tailwind CSS 4 |
| Backend | Express.js + Node.js v22.15.0 |
| Database | MongoDB |
| Package Manager | npm |
| AI Model | Gemini (via API integration) |
| Container | Docker + Docker Compose |
You can run the project in two ways:
Make sure you have Docker installed.
- Docker
- Gemini API Key (get it from Gemini Studio)
- JWT Secret (generate using the command below)
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"- Clone this repository:
git clone https://github.com/dewangga-pk/sd-ai-tech-interview.git
cd sd-ai-tech-interview- Open
docker-compose.ymland replace the following placeholders:
JWT_SECRET: <your_jwt_secret>
GEMINI_API_KEY: <your_gemini_api_key>- Run the app:
docker-compose up --build- Open in your browser: http://localhost:3000
- Node.js v22.15.0 → Download Node.js
- MongoDB → Install MongoDB
- Clone the repository:
git clone https://github.com/dewangga-pk/sd-ai-tech-interview.git- Setup Backend:
- Go to
backend/ - Copy
.env.exampleto.env - Fill the
.envfile with:
MONGO_URI=mongodb://localhost:27017/interview_tool
JWT_SECRET=<your_jwt_secret>
GEMINI_API_KEY=<your_gemini_api_key>
PORT=8000Generate a JWT secret with:
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"- Setup Frontend:
- Go to
frontend/ - Copy
.env.exampleto.env - Set
VITE_API_BASE_URLto your backend URL, e.g.
VITE_API_BASE_URL=http://localhost:8000- Install dependencies and run both frontend & backend:
Terminal 1: Backend
cd backend
npm install
npm run devTerminal 2: Frontend
cd frontend
npm install
npm run devBy default, the frontend will be served at: http://localhost:5173
sd-ai-tech-interview/
├── backend/ # Express backend (API, DB connection, auth, routes)
├── frontend/ # React (Vite) frontend (UI, session forms, question display)
├── docker-compose.yml
├── README.md
- This project uses
.envfiles for all sensitive configs - Actual
.envfiles are ignored via.gitignore - Please use the
.env.exampleas a reference - Do not commit API keys, secrets, or database credentials
