Skip to content
/ guruji Public

Guruji is an AI-powered interview platform that automates the creation, scheduling, and execution of technical interviews. Leveraging modern web technologies and AI/voice services, Guruji offers a seamless experience for recruiters and candidates alike.

Notifications You must be signed in to change notification settings

AnoopVL/guruji

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Guruji - live demo

Guruji is an AI-powered interview platform that automates the creation, scheduling, and execution of technical interviews. Leveraging modern web technologies and AI/voice services, Guruji offers a seamless experience for recruiters and candidates alike.

πŸ”” Note

Guruji is still under active development. You might encounter some issues or ongoing UI changes. πŸ’‘ For bug reports or suggestions, please contact anoop@anoopvl.pro.


πŸš€ Tech Stack

  • Next.js 15 (App Router) β€” Server-side rendering, dynamic routes, API routes
  • React β€” Client-side UI
  • Tailwind CSS & ShadCN UI β€” Utility-first styling and component library
  • Supabase β€” Authentication, PostgreSQL database, CRUD operations
  • Vapi.ai β€” AI voice assistant (interview conductor)
  • Lucide Icons & React-Icons β€” SVG iconography
  • Framer Motion β€” Animations for smooth UI transitions
  • Sonner β€” Toast notifications
  • PNPM β€” Fast package management
  • Docker β€” Containerization for consistent deployment

🧭 Project Flow & User Guide

1. Landing & Authentication

  • Open https://guruji.anoopvl.pro
  • Click Sign in on the landing page
  • Log in using Google or GitHub (via Supabase)
  • Upon success, you're redirected to your Dashboard

2. Dashboard Overview

From here, you can:

  • Create new interviews (/dashboard/create-interview)
  • View all interviews (/all-interviews)
  • View scheduled interviews and feedback (/scheduled-interviews)

3. Creating an Interview

Route: /dashboard/create-interview

  • Step 1: Enter job details (title, description, duration)
  • Step 2: AI generates questions.
  • Step 3: Review and save questions β€” a unique Interview ID and URL are created

4. Managing Interviews

Route: /all-interviews

  • View all created interviews
  • Copy and share interview links

5. Schedule & Feedback

Route: /scheduled-interviews

  • View completed interviews along with feedback
  • Delete interviews via smooth UI interactions

6. Conducting a Live Interview

Route: /interview/[id]/start

  • Vapi.ai conducts the voice interview session
  • The AI asks questions, transcribes answers, and ends the session
  • Feedback is generated and saved
  • Redirects user to the completed screen

7. Viewing Completed Feedback

Route: /interview/[id]/completed

  • Displays summary and analysis
  • Guides you on potential next steps

πŸ“ Project Structure

guruji/
β”œβ”€ app/
β”‚  β”œβ”€ (main)/dashboard/        # Protected dashboard routes
β”‚  β”‚   β”œβ”€ create-interview/     # Interview creation flow
β”‚  β”‚   β”œβ”€ _components/          # Shared UI components
β”‚  β”‚   └─ page.jsx              # Dashboard landing
β”‚  β”œβ”€ (main)/all-interviews/    # List all interviews
β”‚  β”œβ”€ (main)/scheduled-interviews/ # Interviews with feedback
β”‚  β”œβ”€ (main)/layout.js          # Nested layouts + provider
β”‚  β”œβ”€ auth/page.jsx             # OAuth login page
β”‚  β”œβ”€ interview/[id]/start/     # Live interview session
β”‚  β”œβ”€ interview/[id]/completed/ # Interview completed screen
β”‚  └─ provider.jsx              # Supabase auth wrapper & context
β”œβ”€ components/                  # Shared Shadcn UI components
β”œβ”€ services/                    # API clients (Supabase, Constants)
β”œβ”€ public/                      # Static assets
β”œβ”€ styles/                      # Global CSS and Tailwind config
β”œβ”€ Dockerfile.dev/              # Docker configuration files
β”œβ”€ Dockerfile                   # Docker image configuration
β”œβ”€ docker-compose.yml           # Multi-container setup
β”œβ”€ docker-compose.dev.yml       # Multi-container setup for hotreadload
β”œβ”€ .dockerignore               # Docker ignore patterns
β”œβ”€ next.config.mjs              # Next.js config
└─ package.json                 # Scripts & dependencies

βš™οΈ Installation & Setup

Option 1: Traditional Setup

  1. Clone the repo
git clone https://github.com/AnoopVL/gurujii.git
cd gurujii
  1. Install dependencies
pnpm install
  1. Configure environment variables Create a .env.local file:
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_VAPI_PUBLIC_KEY=<your_vapi_key>
NEXT_PUBLIC_SUPABASE_URL=<your_supabase_url>
NEXT_PUBLIC_SUPABASE_KEY=<your_supabase_anon_key>
  1. Run development server
pnpm run dev
  1. Open in browser Go to http://localhost:3000

Option 2: Docker Setup

Prerequisites

  • Docker installed on your machine
  • Docker Compose (usually comes with Docker Desktop)

Quick Start with Docker

  1. Clone the repo
git clone https://github.com/AnoopVL/gurujii.git
cd gurujii
  1. Configure environment variables Create a .env.local file:
NEXT_PUBLIC_SUPABASE_URL=your_superbase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
OPENROUTER_API_KEY=your_router_key
NEXT_PUBLIC_VAPI_PUBLIC_KEY=your_vapi_key
NEXT_PUBLIC_HOST_URL=http://localhost:3000/interview
NEXT_PUBLIC_SITE_URL=http://localhost:3000
  1. Build and run with Docker Compose (recommended)
  • For local development:
docker-compose -f docker-compose.dev.yml up --build
  • For local working:
export $(grep -v '^#' .env.local | xargs)
docker-compose -f docker-compose.yml up --build -d
  1. Access the application Open http://localhost:3000 in your browser

Stop all containers:

docker-compose down

View logs:

docker-compose logs -f

🐳 Docker Configuration

Dockerfile Features

  • Multi-stage build for optimized image size
  • Node.js 18 Alpine base image
  • Automatic dependency caching
  • Production-ready configuration
  • Health checks included

Docker Compose Services

  • app: Main Next.js application
  • nginx (optional): Reverse proxy for production
  • Volume mounting for development
  • Environment variable management
  • Hot reload support in development mode

πŸ“Έ Screenshots

For more screenshots checkout (/screenshots) folder

Landing Page

Landing

Dashboard

Dashboard

Create Interview

Create Interview Create Interview

Live Interview

Live Interview

Feedback Page

Feedback


πŸ“ˆ Deployment

Traditional Deployment

  1. Build the app
pnpm run build
  1. Start in production
pnpm run start

Docker Deployment

Local Production

docker-compose -f docker-compose.prod.yml up -d

Cloud Deployment Options

1. Docker Hub + Cloud Provider:

# Build and push to Docker Hub
docker build -t yourusername/gurujii:latest .
docker push yourusername/gurujii:latest

# Deploy on any cloud provider supporting Docker

2. Container Registry:

  • AWS ECR + ECS/Fargate
  • Google Cloud Run
  • Azure Container Instances
  • DigitalOcean App Platform

3. Platform-as-a-Service:

  • Vercel (recommended for Next.js)
  • Netlify
  • Railway
  • Render

Environment Variables for Production

NEXT_PUBLIC_SITE_URL=https://your-domain.com
NEXT_PUBLIC_VAPI_PUBLIC_KEY=<your_production_vapi_key>
NEXT_PUBLIC_SUPABASE_URL=<your_production_supabase_url>
NEXT_PUBLIC_SUPABASE_KEY=<your_production_supabase_key>
NODE_ENV=production

πŸ”§ Development

Docker Development Workflow

  1. Start development environment:
docker-compose up
  1. Install new dependencies:
docker-compose exec app pnpm add <package-name>
  1. Run commands inside container:
docker-compose exec app pnpm run <script>
  1. Access container shell:
docker-compose exec app sh

Debugging

View application logs:

docker-compose logs app

Monitor container resources:

docker stats

🀝 Contributing

Pull requests and issues are welcome. Open for enhancements and feature requests.

Development Setup for Contributors

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/yourusername/gurujii.git
  3. Create a feature branch: git checkout -b feature/amazing-feature
  4. Set up development environment:
    • Traditional: Follow Option 1 in Installation & Setup
    • Docker: Use docker-compose up for consistent environment
  5. Make your changes and test thoroughly
  6. Commit your changes: git commit -m 'Add amazing feature'
  7. Push to the branch: git push origin feature/amazing-feature
  8. Open a Pull Request

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments


Made with ❀️ by AnoopVL

About

Guruji is an AI-powered interview platform that automates the creation, scheduling, and execution of technical interviews. Leveraging modern web technologies and AI/voice services, Guruji offers a seamless experience for recruiters and candidates alike.

Topics

Resources

Stars

Watchers

Forks