Full-stack application that generates 3 tailored interview questions based on a job title and difficulty tier, powered by Groq's LLaMA 3.3 70B model. The platform allows users to enter a role such as Customer Success Manager, Frontend Engineer, or Product Manager and instantly receive thoughtful, role-specific interview questions generated in real time.
The project demonstrates:
- Full-stack TypeScript architecture
- AI API integration
- REST API design
- Schema validation
- Interactive Swagger documentation
- Modern UI/UX patterns
- Clean project organization
- Generate 3 AI-powered interview questions
- Groq LLM integration
- Vanilla TypeScript frontend
- Express + TypeScript backend
- Swagger API documentation
- Zod schema validation
- Bento-style responsive UI
- Copy-to-clipboard interaction
- Loading and latency states
- Environment-based configuration
- Production-ready structure
- TypeScript
- HTML5
- CSS3
- Vite
- Node.js
- Express
- TypeScript
- Zod
- Swagger UI
- Groq API
- Llama 3 / Mixtral models
- Yarn
- Biome
- dotenv
- Render
interview-generator/
├── src/
│ ├── main.ts ← Frontend logic (fetch, DOM, latency tracking)
│ └── style.css ← Bento grid UI styles
├── index.html ← App shell
├── server.ts ← Express API + Groq integration
├── vite.config.ts ← Vite + proxy config
├── tsconfig.json ← TypeScript config
├── package.json ← Dependencies and scripts
├── yarn.lock ← Locked dependency versions
├── .env.example ← Environment variable template
├── .gitignore
└── README.md
flowchart TD
A[Frontend - TypeScript + Vite]
B[Backend - Express API]
C[Groq API]
A -->|POST /api/generate-questions| B
B -->|Prompt Request| C
C -->|AI-generated questions| B
B -->|JSON response| A
- Node.js v18+
- Yarn
- Groq API key (free, no credit card required)
Create a free API key at:
Clone the repository:
git clone https://github.com/azukauteh/interview-generator.git
cd interview-generatorInstall dependencies:
yarn installCreate environment variables:
cp .env.example .envAdd your API key to .env:
GROQ_API_KEY=your_groq_api_key_here
PORT=3000
NODE_ENV=developmentStart the development server:
yarn dev| Service | URL |
|---|---|
| Frontend App | http://localhost:5173 |
| Backend API | http://localhost:3000 |
| Swagger Docs | http://localhost:3000/docs |
Build the application:
yarn buildStart production server:
yarn startGenerate AI-powered interview questions based on a job title.
| Field | Type | Required | Description |
|---|---|---|---|
jobTitle |
string | ✅ | Job title (2–100 characters) |
difficultyTier |
Standard | Advanced |
❌ | Defaults to Standard |
{
"jobTitle": "Customer Success Manager",
"difficultyTier": "Advanced"
}{
"questions": [
"How do you identify early churn signals across a large portfolio?",
"Describe a time you influenced product roadmap based on customer feedback.",
"How do you balance reactive support with proactive success management?"
]
}The backend validates all incoming requests using Zod schemas.
Examples:
- Empty job titles are rejected
- Invalid payload structures return proper HTTP errors
- AI provider failures are gracefully handled
Interactive API documentation is available at:
http://localhost:3000/docs
Swagger provides:
- Endpoint testing
- Request/response schemas
- API exploration
- Error response documentation
yarn devyarn buildyarn startyarn typecheckyarn lintThe application is deployed using:
- Render
Ensure the following environment variables are configured in production:
GROQ_API_KEY=
PORT=
NODE_ENV=production- Fork the repository
- Create a feature branch
git checkout -b feat/your-feature- Commit your changes
git commit -m "feat: your feature"- Push your branch
git push origin feat/your-feature- Open a Pull Request
https://www.loom.com/share/3400e33a76f04671991e17ac86eca70e
- Multiple AI provider support
- Question difficulty tuning
- Interview answer evaluation
- Saved interview sessions
- PDF export support
- Streaming AI responses
MIT
Built with Groq · Express · TypeScript · Vite
